ఒక పరికరాన్ని రౌటర్ VPN ద్వారా పంపడానికి టోగుల్ కాదు, మూడు నియమాలు కావాలి
ఒక పరికరాన్ని రౌటర్ VPN ద్వారా పంపడం అనేది పాలసీ రూటింగ్, చెక్బాక్స్ కాదు: గుర్తించిన పట్టిక, పరిమిత NAT నియమం, అలాగే గైడ్లు దాటవేసే DNS, IPv6 మరియు LAN మార్గాలు.
రౌటర్ VPNలో ప్రతి పరికరానికి స్విచ్ ఉండదు; మీరు వెతుకుతున్న టోగుల్ మీ తరపున పాలసీ రూటింగ్ నియమాలను వ్రాసే ఒక చిన్నదారి. ఒక ల్యాప్టాప్, ఒక పోర్ట్ పరిధి, ఒక చిరునామాల జాబితా లేదా ఒక LAN విభాగం టన్నెల్ను ఉపయోగించాలి, మిగతావన్నీ WANలో ఉండాలి అనే క్షణంలో, మీరు ఒక ఫీచర్ను ఆన్ చేయడం లేదు, పాలసీ మార్గాన్ని నిర్మిస్తున్నారు. పనికి మూడు కదిలే భాగాలున్నాయి మరియు ప్రతి ఒక్కటి వేరే విధంగా విఫలమవుతుంది: మార్గం లేని గుర్తించిన పట్టిక మౌనంగా కనిపిస్తుంది, తప్పు గొలుసులో పెట్టిన గుర్తు ఏమీ జరగనట్లు కనిపిస్తుంది, మరియు లేని NAT నియమం కనెక్ట్ అయ్యి ఏమీ మోసుకెళ్లని టన్నెల్గా కనిపిస్తుంది. మరో రెండు భాగాలు mangle నియమంలో ఎప్పుడూ కనిపించనందున పోతాయి, అవి DNS మరియు IPv6.
అపోహ: టన్నెల్ అనేది క్లయింట్ సెట్టింగ్
రౌటర్ వైపు VPN క్లయింట్ ఒక మొరటు పనిని బాగా చేస్తుంది: అది 0.0.0.0/0ను ప్రధాన రూటింగ్ పట్టికలో పెట్టి టన్నెల్ వైపు తిప్పుతుంది. WireGuard దాన్ని AllowedIPs నుండి పొందుతుంది, OpenVPN సర్వర్ నెట్టే redirect-gateway నుండి పొందుతుంది, రెండూ రౌటర్ వెనుక ఉన్న ప్రతి హోస్ట్ మార్గాన్ని మారుస్తాయి. AllowedIPs సన్నగా చేయడం లేదా route-nopull జోడించడం క్లయింట్ ఇన్స్టాల్ చేసేదాన్ని మారుస్తుంది. ఆ ఇన్స్టాల్ ఎవరికి వర్తిస్తుందో మాత్రం మార్చదు, ఎందుకంటే క్లయింట్ ఎప్పుడూ పరికరాలను చూడదు. అది ప్యాకెట్లను మాత్రమే చూస్తుంది.
మూలం లేదా గమ్యం ప్రకారం ఎంపిక రూటింగ్ నిర్ణయం, కాబట్టి అది రౌటర్ పాలసీ పొరకు చెందుతుంది: RouterOSలో mangle నియమం మరియు రెండవ పట్టిక, OpenWrt లేదా DD-WRTలో MARK మరియు ip rule, లేదా pfSenseలో గేట్వే టన్నెల్గా ఉన్న ఫైర్వాల్ నియమం. Netgate యొక్క WireGuard క్లయింట్ వంటకం ఊహించే ముందు చదవాల్సినది, ఎందుకంటే ఆ ప్లాట్ఫారమ్లో నియమం గేట్వే, ఇంటర్ఫేస్ కేటాయింపు మరియు బయటకు వెళ్లే NAT ఎంట్రీ అన్నీ ఒక క్లయింట్ టన్నెల్ను ఉపయోగించే ముందు అంగీకరించాలి.
అపోహలో రెండవ సగం రెండవ రౌటర్. మరో బాక్స్ కొనడం, లేదా పరికరాన్ని గెస్ట్ SSIDకి తరలించడం తరచుగా పనిచేస్తుంది, కారణం హార్డ్వేర్ కాదు: అది పరికరాన్ని దాని సొంత సబ్నెట్లో ఉంచుతుంది, ఇది ఫర్మ్వేర్ ఇప్పటికే అర్థం చేసుకునే మూల ఎంపికను ఇస్తుంది. మీ రౌటర్లో ఆ విభాగాన్ని నిర్వచించగలిగితే, అదనపు బాక్స్ మీకు లేని సమస్యను పరిష్కరిస్తుంది.
భాగం ఒకటి: డిఫాల్ట్ మార్గం కాని టన్నెల్
RouterOSలో డిఫాల్ట్ మార్గం లేకుండా క్లయింట్ను జోడించి టన్నెల్కు దాని సొంత పట్టికను ఇవ్వండి. మొదటి మార్గం గుర్తించిన డిఫాల్ట్; రెండవది వైఫల్యంలో సగం.
/ip route add dst-address=0.0.0.0/0 gateway=VPN_GATEWAY_IP routing-mark=vpn distance=1
/ip route add dst-address=0.0.0.0/0 type=unreachable routing-mark=vpn distance=2
చేరుకోలేని మార్గమే గుర్తించిన పట్టిక ప్రధాన పట్టికలోని మినహాయింపు జాబితాను ఓడించే కారణం. టన్నెల్ పడిపోయినప్పుడు గుర్తించిన ప్యాకెట్లు నిశ్శబ్దంగా WANకి తిరిగి వెళ్లకుండా వెంటనే చేరుకోలేని ప్రతిస్పందన పొందుతాయి, కాబట్టి వైఫల్యం ఒక గంట తర్వాత తనిఖీ చేసే భౌగోళిక పేజీలో కాకుండా అప్లికేషన్ లోప సందేశంలో కనిపిస్తుంది.
RouterOS 7 6.x కలిపి ఉంచినదాన్ని విడదీస్తుంది: పట్టికను /routing table add name=vpn fibతో ప్రకటించి, తర్వాత మార్గంలో మరియు mangle నియమంలో పేరుతో సూచిస్తారు. పట్టికను నిర్వచించకుండా routing-mark వ్రాసే 6.x శకలం శుభ్రంగా లోడ్ అవుతుంది మరియు దేనితోనూ సరిపోలదు. మరో క్లాసిక్ రెండు 0.0.0.0/1 సగాలు, లేదా ఒకే పట్టికలో ఒకే దూరంలో రెండు డిఫాల్ట్లు: కర్నెల్ ఒకదాన్ని ఎంచుకుంటుంది, మరియు రీబూట్ తర్వాత ప్రవర్తన మారవచ్చు.
భాగం రెండు: మార్గం వెతకడానికి ముందు గుర్తించండి
ఏ ప్యాకెట్లు ఆ పట్టికలోకి వెళ్తాయో ఎంపిక నిర్ణయిస్తుంది. RouterOS సాధారణంగా గమ్య పాలసీకి చిరునామాల జాబితాతో, లేదా పరికర పాలసీకి మూల చిరునామాతో ప్రారంభమవుతుంది:
/ip firewall mangle add chain=prerouting src-address=192.168.88.50 action=mark-routing new-routing-mark=vpn
/ip firewall mangle add chain=prerouting dst-address-list=via-vpn action=mark-routing new-routing-mark=vpn
/ip firewall address-list add list=via-vpn address=203.0.113.10
Linux ఫర్మ్వేర్ కూడా netfilter గుర్తు మరియు గుర్తించిన ప్యాకెట్లను మీరు నింపిన పట్టికలోకి పంపే నియమంతో అదే చేస్తుంది:
iptables -t mangle -A PREROUTING -p tcp --dport 27000:27050 -j MARK --set-mark 0x200
ip route add default dev tun0 table 100
ip rule add fwmark 0x200 table 100
గొలుసు శైలి ఎంపిక కాదు. ప్యాకెట్ FORWARD చేరుకునే సరికి మార్గ అన్వేషణ ఇప్పటికే జరిగింది, కాబట్టి అక్కడ MARK లేదా DROP చేయడం తిరిగి వ్రాయడం లేదా విసిరేయడం మాత్రమే చేయగలదు. గుర్తు ఫార్వర్డ్ అయ్యే ట్రాఫిక్కు PREROUTINGలో, రౌటర్ స్వయంగా సృష్టించే ట్రాఫిక్కు OUTPUTలో పడాలి, రౌటర్ DNS, NTP మరియు నవీకరణ తనిఖీలు అక్కడే నివసిస్తాయి. ఆ అవుట్పుట్ మార్గమే పూర్తిగా టన్నెల్ చేసిన సెటప్ లీక్ పరీక్షలో ఇప్పటికీ ISP రిజాల్వర్ నుండి సమాధానం ఇచ్చే సాధారణ కారణం.
పరికర పాలసీకి జారిపోని సరిపోలిక కావాలి. DHCPలో చిరునామాను రిజర్వ్ చేయండి, లేదా అంకిత విభాగానికి ఇంటర్ఫేస్ను సరిపోల్చండి; తర్వాత మరో పరికరానికి మారే చిరునామా నిశ్శబ్దంగా తప్పు క్లయింట్కు టన్నెల్ను వర్తింపజేస్తుంది. సొంత సబ్నెట్ ఉన్న ప్రతి SSID వంతెన అదే ఆలోచన యొక్క మన్నికైన సంస్కరణ, అది IPv6 నియమాలకు కూడా నివసించడానికి చోటు ఇస్తుంది.
భాగం మూడు: NAT, DNS మరియు LAN మినహాయింపు
టన్నెల్ ద్వారా బయటకు వెళ్లే ట్రాఫిక్కు అవతలి వైపు సమాధానం ఇచ్చే మూల చిరునామా కావాలి. అనువాదాన్ని టన్నెల్ ఇంటర్ఫేస్కు పరిమితం చేయండి: RouterOSలో out-interface=VPN_NAME, Linuxలో -o tun0, pfSenseలో సరిపోలే బయటకు వెళ్లే NAT ఎంట్రీ. ఆ పరిమితి లేని masquerade నియమం మీరు వదిలేయాలనుకున్న ట్రాఫిక్ను కూడా తిరిగి వ్రాస్తుంది, మరియు లక్షణం ఏమిటంటే టన్నెల్ లేని పరికరం తన పబ్లిక్ చిరునామాను కోల్పోతుంది.
LAN మినహాయింపు టన్నెల్ కంటే ఎక్కువ మద్దతు థ్రెడ్లను సృష్టిస్తుంది. గుర్తించిన పట్టికలో డిఫాల్ట్ మార్గం మాత్రమే ఉంటే, ఎంచుకున్న పరికరం నుండి ప్రింటర్ లేదా NAS గమ్యం ఆ డిఫాల్ట్తో సరిపోలి టన్నెల్లో కనుమరుగవుతుంది. అదే పట్టికలో LAN మార్గాన్ని జోడించండి, లేదా ఎంపికలో స్థానిక సబ్నెట్ను మినహాయించండి; రెండూ పనిచేస్తాయి, మరియు తర్వాత VLANలు జోడించినప్పుడు మినహాయింపును సరిగ్గా ఉంచడం సులభం.
DNS వేరే మార్గం తీసుకుంటుంది. రౌటర్ ఫార్వర్డ్ చేసే ప్రశ్నలు రౌటర్ నుండి పుట్టి OUTPUTను అనుసరిస్తాయి, ఫార్వర్డ్ చేసిన గుర్తును కాదు, కాబట్టి పూర్తిగా టన్నెల్ చేసిన ల్యాప్టాప్ కూడా ISP ద్వారా పేర్లను పరిష్కరించగలదు. క్లయింట్లను టన్నెల్ ద్వారా చేరుకోగల రిజాల్వర్కు మళ్లించండి, లేదా రౌటర్ సొంత port-53 ట్రాఫిక్ను గుర్తించండి, ఆపై సమాధానం వెబ్ అభ్యర్థనతో ప్రయాణించిందని ఊహించకుండా పరిష్కరించిన చిరునామాను తనిఖీ చేయండి.
నియమం సరిపోలుతుంది కానీ యాప్ ఇప్పటికీ WANను ఉపయోగించినప్పుడు
గమ్య జాబితాలు త్వరగా పాతవవుతాయి. ఒక పేరు జాబితాలో లేని చిరునామాకు పరిష్కరించబడుతుంది, కాబట్టి అభ్యర్థన WANను తీసుకుంటుంది, జాబితాలో ఉన్న చిరునామాపై మీరు చేసిన ప్రతి పరీక్ష పనిచేసింది. క్లయింట్ ఉపయోగించే అదే రిజాల్వర్ నుండి జాబితాను రిఫ్రెష్ చేయండి, మరియు ఒక పరికరం నుండి మొత్తం ట్రాఫిక్ నిజంగా కావాలంటే మూల ఆధారిత ఎంపికను ఇష్టపడండి.
IPv6 నిశ్శబ్ద బైపాస్. పరికరానికి సొంత డిఫాల్ట్ మార్గం మరియు సొంత నియమ సముదాయం ఉన్న రెండవ చిరునామా కుటుంబం ఉంది, IPv4 చిరునామాతో మాత్రమే సరిపోల్చడం పాలసీలో సగం. అదే ఎంపికను ip6tables లేదా nftables సమానమైన దానికి వర్తింపజేయండి, లేదా ఆ విభాగంలో IPv6ను ప్రమాదవశాత్తు కాకుండా ఉద్దేశపూర్వకంగా నిలిపివేయండి.
స్థాపించిన కనెక్షన్లు కూడా ముఖ్యం. మార్పుకు ముందు సృష్టించిన conntrack ఎంట్రీ గడువు ముగిసే వరకు పాత మార్గాన్ని అనుసరిస్తూనే ఉంటుంది, కాబట్టి సవరణ సమయంలో తెరిచి ఉన్న బ్రౌజర్ ఎప్పుడూ వర్తించని నియమంలా కనిపిస్తుంది. పాలసీని అంచనా వేయడానికి ముందు కొత్త కనెక్షన్ తెరవండి, లేదా స్థితిని క్లియర్ చేయండి.
రెండు పరికరాలు మరియు ఒక రీబూట్తో ధృవీకరించండి
టన్నెల్లో ఉండాల్సిన పరికరాన్ని మరియు ఉండకూడని పరికరాన్ని పరీక్షించి, వేగ సంఖ్యకు బదులుగా రెండవ హాప్ను పోల్చండి. ప్రతి దాని నుండి traceroute రెండవ హాప్లో టన్నెల్ గేట్వే లేదా ISP గేట్వే చూపిస్తుంది; రెండూ ఒకేలా కనిపిస్తే గుర్తు లేదా పట్టిక నియమం చెప్పినట్లు చేయడం లేదు. పరీక్షకు కొత్త కనెక్షన్లను ఉపయోగించండి.
తర్వాత రీబూట్ చేయండి. పనిచేస్తున్న పాలసీ పాడయ్యే చోటు బూట్ క్రమమే, ఎందుకంటే చేరుకోలేని మార్గం ఇన్స్టాల్ చేయడానికి ముందు క్లయింట్ పైకి ఉండాలి, మరియు పాత నియమ సముదాయాన్ని పునరుద్ధరించే సేవ్ చేసిన స్నాప్షాట్ మీ పట్టికను మీద వ్రాస్తుంది. ప్రతి నియమం సేవ్ చేసిన కాన్ఫిగరేషన్లో ఉందా మరియు గుర్తించిన డిఫాల్ట్ బూట్ తర్వాత ఉందా అని మీరు టైప్ చేసిన తర్వాత మాత్రమే కాదు, తనిఖీ చేయండి.
ఏదైనా విఫలమైతే మొదట గుర్తును తీసి సాధారణ ట్రాఫిక్ తిరిగి వస్తుందో చూడండి, తర్వాత పట్టికను తీయండి. ఆ క్రమం మీరు రూటింగ్ సమస్యను వెంబడిస్తున్నారా ఫైర్వాల్ సమస్యను అని చెబుతుంది, మరియు పని పూర్తయ్యే వరకు ఇంట్లో పనిచేసే ప్రింటర్ను వదిలిస్తుంది.