సొరంగం ద్వారా ఒక ప్రైవేట్ సబ్ నెట్ మాత్రమే పంపి మిగతావన్నీ మీ సాధారణ మార్గంలో పోనివ్వడం చిన్న అభ్యర్థన, కానీ తప్పు చేయడానికి చాలా మార్గాలున్నాయి. ఫలితాన్ని split tunneling అనే చెక్ బాక్స్ నిర్ణయించదు, నిర్ణయం ఎక్కడ అమలవుతుందో అది నిర్ణయిస్తుంది: క్లయింట్ సొంత మార్గ పట్టికలో, సర్వర్ నెట్టే మార్గంలో, లేదా రెండు చివరలు చర్చించుకునే విధానంలో. తప్పు పొరను ఎంచుకుంటే మీరు ఎప్పుడూ కోరుకోని పూర్తి సొరంగం లేదా అవతలి వైపు అంగీకరించడానికి నిరాకరించే సొరంగానికి వెళ్లే మార్గం లభిస్తుంది. ఏదైనా కాన్ఫిగరేషన్ తెరవడానికి ముందు నేను మూడు షరతుల పరీక్షను ఉపయోగించి, తరువాత క్రింది పద్ధతుల్లో ఒకటి ఎంచుకుంటాను.

నిర్మాణాన్ని నిర్ణయించే మూడు షరతులు

మొదట, నెట్ వర్క్ యజమాని నుండి ఖచ్చితమైన ప్రిఫిక్స్ మరియు మాస్క్ మీకు అవసరం. 10.x నెట్ వర్క్ ప్రిఫిక్స్ కాదు; 10.20.0.0/16 ప్రిఫిక్స్. ఇది మీ ఇంటి LAN, Docker వంతెన లేదా మీరు నడిపే మరో VPN తో అతివ్యాప్తి చెందదని నిర్ధారించుకోండి, ఎందుకంటే అతివ్యాప్తి మార్గాన్ని అస్పష్టం చేస్తుంది మరియు కెర్నల్ మీరు ఉద్దేశించని నమోదును ఎంచుకుంటుంది.

రెండవది, తిరిగి వచ్చే ట్రాఫిక్ కు ఎవరు సమాధానం ఇస్తారు. ప్యాకెట్ ను సొరంగంలోకి పంపడం దానిని VPN సర్వర్ వరకు మాత్రమే చేరుస్తుంది. సబ్ నెట్ మీ క్లయింట్ పూల్ కు తిరిగి వెళ్లే మార్గం లేని మరో రౌటర్ వెనుక ఉంటే, సర్వర్ ట్రాఫిక్ ను మాస్క్ చేయాలి, లేదా ఆ రౌటర్ మీ పూల్ ను నేర్చుకోవాలి. క్లయింట్ వైపు ఏ మార్గం కూడా తప్పిపోయిన తిరుగు మార్గాన్ని సరిచేయదు.

మూడవది, అమలు స్థానం. కొన్ని క్లయింట్లు మార్గాన్ని ఇన్ స్టాల్ చేస్తాయి, మిగతాది ఆపరేటింగ్ సిస్టమ్ చేస్తుంది. మరికొన్ని విధానంపై చర్చిస్తాయి, గేట్ వే అంగీకరించని విధానం ఎలాంటి సొరంగాన్నీ సృష్టించదు: ప్యాకెట్లు స్పష్టమైన లోపం లేకుండా విసిరివేయబడతాయి. ఏదైనా రాయడానికి ముందు ఈ రెండింటిలో మీ సందర్భం ఏదో గుర్తించండి.

WireGuard: AllowedIPs అనేది మార్గ పట్టిక

క్లయింట్ పై, AllowedIPs సొరంగంలోకి ప్రవేశించగల గమ్యస్థానాలను జాబితా చేస్తుంది, wg-quick ప్రతి నమోదును సాధారణ మార్గంగా మారుస్తుంది. కాబట్టి ఈ పనిలో క్లయింట్ సగం ఒకే వరుస.

[Peer]
PublicKey = ...
Endpoint = vpn.example.net:51820
AllowedIPs = 10.20.0.0/16

ఇప్పుడు అదే క్లయింట్ కోసం సర్వర్ నమోదుతో పోల్చండి. అది సర్వర్ క్లయింట్ కు ఏమి పంపుతుందో వివరిస్తుంది, అది సాధారణంగా క్లయింట్ సొరంగ చిరునామా, ప్రైవేట్ సబ్ నెట్ కాదు.

[Peer]
PublicKey = ...
AllowedIPs = 10.99.0.2/32

ఈ రెండింటిని మార్చడమే నేను ఎక్కువగా చూసే తప్పు. సర్వర్ peer విభాగం క్రింద 10.20.0.0/16 ఉంచడం మొత్తం సబ్ నెట్ ఆ క్లయింట్ వెనుక ఉందని చెబుతుంది, అది అనుమతి కాదు, సైట్ నుండి సైట్ వరకు చేసే దావా. ఏ peer యొక్క AllowedIPs తోనూ సరిపోలని ప్యాకెట్లు నిశ్శబ్దంగా విసిరివేయబడతాయి, కాబట్టి తప్పు నమోదు సరిగ్గా ఫైర్ వాల్ సమస్యలాగా కనిపిస్తుంది.

మార్గాలను మీరే నిర్వహిస్తే, [Interface] క్రింద Table = off సెట్ చేసి కావలసిన మార్గాన్ని జోడించండి. అప్పుడు ఏదీ స్వయంచాలకంగా జోడించబడదు, కాబట్టి మార్గం ఇంటర్ ఫేస్ ను పైకి లేపే దానిలో ఉండాలి.

OpenVPN: మార్గాన్ని నెట్టి, తరువాత అది చేరిందని నిర్ధారించుకోండి

సాధారణ సర్వర్ లో మార్పు సర్వర్ కాన్ఫిగ్ లో క్లయింట్ పూల్ పక్కన ఉన్న ఒక సూచన.

push "route 10.20.0.0 255.255.0.0"

క్లయింట్ కనెక్ట్ అయినప్పుడు దాన్ని జోడిస్తుంది. అదే ప్రొఫైల్ redirect-gateway కూడా నెట్టినప్పుడు, లేదా ఎవరైనా ఇప్పటికే route-nopull జోడించినప్పుడు వైఫల్య విధానం కనిపిస్తుంది: మొదటిది సెషన్ ను పూర్తి సొరంగంగా మారుస్తుంది, రెండవది మీది సహా నెట్టిన ప్రతి మార్గాన్ని విసిరివేస్తుంది.

పూర్తి సొరంగ సర్వర్ కు వ్యతిరేకంగా ఇరుకైన ప్రవర్తన అవసరమైన క్లయింట్ తనకు వద్దన్న భాగాలను మాత్రమే విస్మరించాలి. OpenVPN 2.4 మరియు తరువాత, pull-filter సరిగ్గా దానికోసమే ఉంది.

pull-filter ignore "redirect-gateway"
route 10.20.0.0 255.255.0.0

చిరునామా కుటుంబాలను వేరుగా ఉంచండి: నెట్టిన IPv4 మార్గం IPv6 కు పరిష్కరించబడే అంతర్గత సేవకు ఏమీ చేయదు, ఆ సేవ సొరంగం ద్వారా విఫలమవుతుంది, మిగతావన్నీ బాగానే కనిపిస్తాయి.

ప్రైవేట్ సబ్ నెట్ VPN సర్వర్ పై కాకుండా మరో క్లయింట్ వెనుక ఉన్నప్పుడు, సర్వర్ కు తెలియజేయాలి. client-config-dir ద్వారా ప్రతి క్లయింట్ కు iroute 10.20.0.0 255.255.0.0 ఉన్న ఫైల్ జోడించండి, దానితో పాటు సరిపోలే route కూడా, మిగతా క్లయింట్లు మార్గాన్ని నేర్చుకోవడానికి. iroute లేకుండా ఆ ప్రిఫిక్స్ ను అదే సొరంగం ద్వారా పంపడానికి సర్వర్ కు కారణం లేదు.

IPsec: ట్రాఫిక్ ఎంపికలు ఏకీభవించాలి

IPsec లో నెట్టడానికి మార్గం లేదు. రెండు చివరలు సొరంగం లోపల ఏ చిరునామాలు ఉంటాయో చర్చించుకుంటాయి, అంగీకరించిన ఎంపికలకు వెలుపల ఉన్న ట్రాఫిక్ గుప్తీకరించబడదు, దాని ద్వారా పంపబడదు. strongSwan క్లయింట్ లో ఎంపికలు స్పష్టంగా ఉంటాయి.

leftsubnet=192.168.1.0/24
rightsubnet=10.20.0.0/16

గేట్ వే రెండు వైపులా 0.0.0.0/0 తో కాన్ఫిగర్ చేయబడి ఉంటే, IKEv2 సంకోచం సాధారణంగా చైల్డ్ SA ను రెండు ప్రతిపాదనల ఖండనానికి తగ్గిస్తుంది, అదే కావలసిన ఫలితం. కొన్ని గేట్ వేలు బదులుగా తమ కాన్ఫిగర్ చేసిన ఎంపికలతో సరిపోలని ప్రతిపాదనను తిరస్కరిస్తాయి, అప్పుడు లాగ్ లో మార్గ ఫిర్యాదుకు బదులు విఫలమైన చైల్డ్ SA కనిపిస్తుంది. అలా జరిగినప్పుడు మార్పు గేట్ వేది, ఎందుకంటే క్లయింట్ మార్గం అవతలి వైపు అంగీకరించని ఎంపికకు సొరంగాన్ని సృష్టించలేదు.

Windows లో అంతర్నిర్మిత క్లయింట్ అదే నిర్ణయాన్ని రెండు సెట్టింగ్ ల వెనుక దాచుతుంది. సొరంగ విభజన ఆన్ లో ఉండాలి, ప్రిఫిక్స్ ప్రొఫైల్ పై నమోదు కావాలి.

Set-VpnConnection -Name Office -SplitTunneling $true
Add-VpnConnectionRoute -ConnectionName Office -DestinationPrefix 10.20.0.0/16

ప్రిఫిక్స్ ను నమోదు చేయడమే దాన్ని తిరిగి కనెక్ట్ అయిన తర్వాత కూడా నిలిపి ఉంచుతుంది, చేతితో జోడించిన మార్గం అలా చేయదు.

ఎండ్ పాయింట్ మరియు DNS ను నిర్ణయం వెలుపల ఉంచండి

VPN ఎండ్ పాయింట్ సొరంగం లేకుండా చేరుకోగలిగేలా ఉండాలి, లేకపోతే సొరంగం తనలో తాను కూలిపోతుంది. 10.20.0.0/16 మాత్రమే మార్గమైతే అది స్వయంచాలకం, ఎందుకంటే ఎండ్ పాయింట్ ప్రజా చిరునామా. పూర్తి సొరంగ ప్రొఫైల్ లో అలా కాదు, సొరంగం పైకి లేవడానికి ముందు క్లయింట్ కు ఎండ్ పాయింట్ వరకు స్పష్టమైన హోస్ట్ మార్గం అవసరం.

DNS అనేది మార్గాన్ని నెట్టడం మీ తరఫున తీసుకోని రెండవ నిర్ణయం. అంతర్గత పేర్లు సాధారణంగా ప్రైవేట్ నెట్ వర్క్ మాత్రమే చేరుకోగల పరిష్కర్త ద్వారా పరిష్కరించబడతాయి. సర్వర్ DNS సర్వర్ ను నెట్టితే ప్రతి పేరు దాని ద్వారా వెళ్తుంది; నెట్టకపోతే అంతర్గత పేర్లు విఫలమవుతాయి లేదా బహిరంగంగా మీరు ఉద్దేశించని దానికి పరిష్కరించబడతాయి. విభజిత DNS అంతర్గత పరిష్కర్తపై ఒక శోధన డొమైన్ ను ఉంచుతుంది, కానీ అది క్లయింట్ మద్దతుపై ఆధారపడి ఉంటుంది, కాబట్టి దాన్ని మార్గం యొక్క దుష్ప్రభావం కాకుండా ప్రత్యేక పనిగా పరిగణించండి.

ధృవీకరించి, తరువాత రీబూట్ చేసి మళ్లీ ధృవీకరించండి

మూడు పరీక్షలు మార్గ ప్రశ్నను కవర్ చేస్తాయి. దూరపు చిరునామా ఎక్కడికి వెళ్తుందో కెర్నల్ ను అడగండి, సబ్ నెట్ లోపలి నుండి ఏదైనా తీసుకోండి, తరువాత సాధారణ ప్రజా అభ్యర్థన ఇప్పటికీ మీ సాధారణ కనెక్షన్ ద్వారా బయటకు వెళ్తుందని నిర్ధారించుకోండి.

ip route get 10.20.5.7
curl -sS http://10.20.5.7/health
curl -sS https://ifconfig.me

మొదటి వరుస ఒక ఇంటర్ ఫేస్ పేరు చెబుతుంది. అది మీ భౌతిక ఇంటర్ ఫేస్ పేరు చెబితే, మార్గం ఎప్పుడూ చేరలేదు. Windows లో Find-NetRoute -RemoteIPAddress 10.20.5.7 అదే ప్రశ్నకు సమాధానం ఇస్తుంది, చివరి పరీక్ష ఇప్పటికీ మీ సాధారణ చిరునామాను చూపాలి, VPN సర్వర్ ది కాదు.

తరువాత రీబూట్ చేయండి. చేతితో జోడించిన మార్గాలు అదృశ్యమవుతాయి, ప్రొఫైల్, నెట్టిన కాన్ఫిగ్ లేదా AllowedIPs నుండి వచ్చే మార్గాలు తిరిగి వస్తాయి. ఇరుకైన ప్రాప్యత రీస్టార్ట్ కు ముందు పనిచేసి తర్వాత విఫలమైతే, తప్పు మార్గంలో కాదు, సొరంగం ఎలా ప్రారంభమవుతుందో అందులో ఉంది.

పూర్తయిందని చెప్పే ముందు నాలుగు విషయాలు నిర్ధారించుకోండి: ప్రిఫిక్స్ నెట్ వర్క్ యజమాని నుండి వచ్చింది మరియు స్థానికంగా ఏదీతోనూ అతివ్యాప్తి చెందలేదు, తిరుగు మార్గం ఉంది లేదా మాస్కింగ్ నియమం దాన్ని భర్తీ చేస్తుంది, మీరు కాన్ఫిగర్ చేసిన పద్ధతే మీ ప్లాట్ ఫారమ్ పై మార్గాన్ని అమలు చేస్తుంది, మరియు శుభ్రమైన రీబూట్ తర్వాత కూడా అదే పరీక్షలు పాస్ అవుతాయి. strongSwan యొక్క ఫార్వార్డింగ్ గమనికలు తిరుగు మార్గమే పదే పదే విఫలమయ్యే భాగమైతే చదవదగినవి.

సంబంధిత వ్యాసాలు