SOCKS5 పై OpenVPN: వెర్షన్, రవాణా మరియు DNS సరిపోలిక
SOCKS గొలుసు ప్రాక్సీ వెర్షన్, రవాణా లేదా DNS మార్గం సరిపోలనప్పుడు విఫలమవుతుంది. SOCKS5 సరిపోల్చండి, TCP మోసుకెళ్లండి, గొలుసును ఒక నేమ్స్పేస్ లోపల ఉంచండి.
ఈ వర్క్స్టేషన్ నుండి బయటకు వెళ్లే ఒక మార్గం SOCKS ప్రాక్సీ, దాని వెనుక OpenVPN ఉపయోగకరమైన వివరం లేకుండా కనెక్ట్ టైమౌట్ నివేదిస్తుంది. అదే మెషీన్ బ్రౌజర్ ఆ ప్రాక్సీ ద్వారా పనిచేస్తుంది, ఆధారాలు సరిగ్గా ఉన్నాయి, పోర్ట్ సమాధానం ఇస్తుంది. మూడు విషయాలు మొదట పరిశీలించాల్సినంత భిన్నంగా ఉంటాయి: ప్రాక్సీ మాట్లాడే SOCKS వెర్షన్, క్లయింట్ ఎంచుకున్న రవాణా, మరియు పేరు విశ్లేషణ జరిగే చోటు. ఫైర్వాల్ తప్పు అని నిర్ణయించే ముందు వాటిలో ప్రతిదాన్ని నిర్ధారించండి.
ఫైర్వాల్ కంటే ముందు SOCKS వెర్షన్ సరిపోల్చండి
కమ్యూనిటీ OpenVPN socks-proxy కోసం SOCKS5 మాట్లాడుతుంది. SOCKS4 మాత్రమే ఇచ్చే ప్రాక్సీకి దాన్ని కలిపితే TCP కనెక్షన్ తెరుచుకుని ఆగిపోతుంది, ఎందుకంటే క్లయింట్ అవతలి వైపు ఎప్పుడూ పార్స్ చేయని పలకరింపుకు సమాధానం కోసం ఎదురుచూస్తుంది. బయటి నుండి ఈ ఆగిపోవడం ఫిల్టర్ చేసిన పోర్ట్ లాగానే కనిపిస్తుంది, అందుకే వెర్షన్ ప్రశ్న ఏ ఫైర్వాల్ నియమం కంటే ముందు వస్తుంది. SOCKS తెలిసిన ఒక ఫెచ్ దాన్ని ఒకే కమాండ్లో తేల్చుతుంది.
curl --socks5-hostname 127.0.0.1:9050 gw.lab.example
పూర్తైన అభ్యర్థన ఒకేసారి రెండు విషయాలు నిరూపిస్తుంది: ప్రాక్సీ SOCKS అభ్యర్థనను అంగీకరించింది, పేరును విశ్లేషించింది. URL స్కీమ్ అవసరం లేదు, ఎందుకంటే curl బేర్ హోస్ట్ను HTTP గా భావిస్తుంది, ఇది ఈ పరీక్షకు సరిపోతుంది.
ఆ ఫెచ్ క్లయింట్ లాగ్ దాచే వైఫల్యాన్ని కూడా తొలగిస్తుంది. ప్రాక్సీ బ్రౌజర్కు అనుమతి ఇచ్చి కూడా VPN గమ్యాన్ని తిరస్కరించవచ్చు, అప్పుడు తిరస్కారం CONNECT వద్ద జరుగుతుంది, ఏ VPN ప్రామాణీకరణకు ముందే. OpenVPN టైమౌట్ మాత్రమే చెబుతుంది, కాబట్టి ప్రాక్సీ సొంత సమాధానమే మీకు కావాల్సిన సాక్ష్యం.
రవాణా రెండు వైపులా TCP అయి ఉండాలి
SOCKS5 ఇక్కడ TCP స్ట్రీమ్ను మోసుకెళ్తుంది, కాబట్టి సొరంగానికే proto tcp-client కావాలి. ఇంకా UDP పై ఉన్న ప్రొఫైల్ ఈ మార్గంలో పనిచేయదు, ఎందుకంటే క్లయింట్ ప్రోటోకాల్ యొక్క UDP అసోసియేషన్ మోడ్ను ఉపయోగించదు. ప్రొఫైల్ను తిప్పడం నిజమైన మార్పు, లాంఛనం కాదు: దూరపు వైపు అదే పోర్ట్లో TCP పై వినాలి. తర్వాత పేలోడ్ TCP లోపల TCP అవుతుంది, అక్కడ పోయిన సెగ్మెంట్ రెండుసార్లు తిరిగి పంపబడుతుంది, వేగం తగ్గుతుంది, ఇది ఇంటరాక్టివ్ సెషన్లు పెద్ద బదిలీల కంటే చాలా ఎక్కువగా గమనిస్తాయి.
proto tcp-client
remote gw.lab.example 8443
socks-proxy 127.0.0.1 9050
ఈ ఆదేశం ప్రాక్సీ హోస్ట్, ఐచ్ఛిక పోర్ట్ మరియు ఐచ్ఛిక ఆధారాల ఫైల్ను తీసుకుంటుంది. వాటిని ప్రొఫైల్లోనే ఉంచండి, మరెక్కడైనా ఉంచిన కాపీ అదే విధంగా ప్రవర్తిస్తుంది.
మొత్తం గొలుసును ఒక కంటైనర్కు పరిమితం చేయండి
గొలుసును హోస్ట్పై చేయడం అంటే దాని డిఫాల్ట్ మార్గాన్ని స్వాధీనం చేసుకోవడం, resolver ను తర్వాత ఎవరూ వివరించలేని స్థితిలో వదిలేయడం. నేమ్స్పేస్ లేదా కంటైనర్ దాన్ని పరిమితం చేస్తుంది, కాబట్టి హోస్ట్ తన మార్గాన్ని ఉంచుకుంటుంది, SOCKS హాప్ మరియు సొరంగం కలిసి ఉంటాయి. దాని లోపల సొరంగ పరికరం, ఆ పరికరాన్ని కాన్ఫిగర్ చేసే హక్కులు, చేరుకోగల ప్రాక్సీ లేకుండా ఏదీ లేవదు. Compose సేవ ఇది cap_add: NET_ADMIN మరియు bind-మౌంట్ చేసిన /dev/net/tun ద్వారా పొందుతుంది.
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ఈ జంట కంటైనర్ను privileged గా నడపడం కంటే సన్నగా ఉంటుంది, పరికర ప్రాప్యతలో అవసరమైన మొత్తం ఇదే. Tor క్లయింట్ లేదా వేరే ప్రాక్సీ కంటైనర్ వినేవాడిని అందించగలదు. రెండు సందర్భాల్లో దాన్ని loopback కు కట్టండి, ప్రాక్సీని నెట్వర్క్కు బయటపెట్టడం బదులు నేమ్స్పేస్ నుండి హోస్ట్ ద్వారా దాన్ని చేరుకోండి.
పేరు విశ్లేషణ ఇక్కడే వేరుచేయడం విఫలమవుతుంది
ప్యాకెట్లను మోసుకెళ్తూనే హోస్ట్ resolver ను అడిగే సొరంగం ఏదీ వేరు చేయలేదు. రెండు విషయాలు వేరుచేయడాన్ని నిజం చేస్తాయి: నేమ్స్పేస్కు సొంత resolver ఉండటం, దాని క్వెరీలు ప్రాక్సీ లేదా సొరంగం ద్వారా వెళ్లడం, ఎప్పుడూ భౌతిక ఇంటర్ఫేస్ ద్వారా వెళ్లకపోవడం. పరీక్షకు రెండు పేర్లు వాడండి: ఒకటి సొరంగం వెనుక మాత్రమే ఉంటుంది, మరొకటి అదే మార్గం తీసుకోవాల్సిన పబ్లిక్ పేరు.
docker compose exec vpn cat /etc/resolv.conf
docker compose exec vpn getent hosts internal.lab.example
దూరపు పేరు విశ్లేషణ అయి పబ్లిక్ పేరు కాకపోతే, గొలుసు ఎంపిక చేసినది, విరిగినది కాదు, తేడా ఏ క్వెరీ ఏ మార్గం తీసుకుందో చెబుతుంది. రెండూ హోస్ట్ నుండి విశ్లేషణ అయి కంటైనర్ లోపల ఏదీ కాకపోతే, కంటైనర్ ఇంకా హోస్ట్ resolver ను అప్పు తీసుకుంటోంది. దొరికిన resolver ఫైల్ను నమోదు చేయండి, ఎందుకంటే అదే మార్చాల్సిన సెట్టింగ్.
ప్రతి హాప్ను క్రమంగా నిరూపించండి
జాబితా చిన్నది. SOCKS5 అభ్యర్థనకు సమాధానం వస్తుంది, సొరంగం ప్రాక్సీ ద్వారా తన వినేవాడిని చేరుతుంది, నేమ్స్పేస్ నుండి బయటకు వెళ్లే ప్యాకెట్లు దూరపు వైపు ఆశించే చిరునామాను మోసుకెళ్తాయి. మరిన్ని కాన్ఫిగరేషన్లు పేర్చడం బదులు ఒక్కొక్కటిగా నిర్ధారించండి. క్లయింట్ కనెక్ట్ అయిందని, ఏదీ కదలడం లేదని చెప్పినప్పుడు, విరామం దాదాపు ఎప్పుడూ రెండవ లేదా మూడవ వాస్తవంలో ఉంటుంది.
curl --socks5-hostname 127.0.0.1:9050 gw.lab.example
docker compose exec vpn ip route get 203.0.113.10
docker compose exec vpn getent hosts internal.lab.example
పనిచేసిన కలయికను రాసుకోండి: SOCKS వెర్షన్, రవాణా, resolver మరియు నేమ్స్పేస్ సెట్టింగ్లు. ఈ గొలుసును రెండవసారి జ్ఞాపకం నుండి పరిష్కరించడం నోట్ కంటే ఖరీదు. ఆ నాలుగు వాస్తవాలను టికెట్లో ఉంచండి, చాట్ థ్రెడ్లో కాదు.
కనెక్ట్ అయిందని చెప్పి ఏదీ పంపని గొలుసు, మీరు ఇంకా నిరూపించని హాప్ వద్దే సాధారణంగా విఫలమై ఉంటుంది. మరో పొర జోడించే ముందు ఆ హాప్ను పరీక్షించండి.