VPN క్లయింట్గా Pi: ఒక మేనేజర్ లేక స్వంత స్క్రిప్ట్?
Raspberry Pi పై NetworkManager ప్రొఫైల్ను చేతితో రాసిన క్లయింట్ స్క్రిప్ట్తో పోల్చండి, పూర్తి సొరంగం, DNS, IPv6 మరియు సొరంగం పడిపోయినప్పుడు ప్రవర్తనతో సహా.
తన స్వంత బయటకు వెళ్లే ట్రాఫిక్ను మాత్రమే రక్షించుకోవాల్సిన Raspberry Pi కు రెండు వాస్తవిక డిజైన్లు ఉన్నాయి: నెట్వర్క్ మేనేజర్ సొరంగాన్ని కలిగి ఉండనివ్వండి, లేదా దానిని కలిగి ఉన్న స్క్రిప్ట్ను ఉంచుకోండి. రెండూ ట్రాఫిక్ను మోయగలవు. అవి వేర్వేరు ప్రదేశాలలో విఫలమవుతాయి, మరియు రాత్రి రెండు గంటలకు దూరం నుండి మీరు నిర్ధారించగల విఫలతయే ఎంచుకోవడానికి అర్హమైనది. యాజమాన్యంపై, IPv6 మరియు DNS పాల్గొన్నప్పుడు పూర్తి సొరంగం అంటే ఏమిటి అనే దానిపై, మరియు సొరంగం పడిపోయే క్షణంలో ఏమి జరుగుతుంది అనే దానిపై వాటిని పోల్చండి.
ఒక సొరంగానికి ఇద్దరు యజమానులు
డిజైన్ A అంటే సిస్టమ్ నెట్వర్క్ మేనేజర్ లోపల ఉన్న ప్రొఫైల్: దిగుమతి చేసిన OpenVPN ప్రొఫైల్ లేదా స్థానిక WireGuard కనెక్షన్, బూట్ సమయంలో Ethernet మరియు Wi-Fi లను లేపే అదే సేవ ద్వారా సక్రియం అవుతుంది. డిజైన్ B అంటే మీ స్వంత యూనిట్, ఇది క్లయింట్ను నేరుగా నడుపుతుంది, రిజాల్వర్ కాన్ఫిగరేషన్ను సవరిస్తుంది మరియు దాని స్వంత మార్గాలు మరియు ఫైర్వాల్ నియమాలను ఇన్స్టాల్ చేస్తుంది. రెండూ చట్టబద్ధమైన డిజైన్లు; రూటింగ్ పట్టికను ఎవరు మార్చగలరు అనే దానిలో అవి భిన్నంగా ఉంటాయి.
యజమానులు భిన్నం కాబట్టి వైఫల్యాలు కూడా భిన్నం. A లో, సక్రియం కాని ప్రొఫైల్ ఇంటర్ఫేస్ను పైన, సొరంగాన్ని క్రింద ఉంచుతుంది, మరియు మేనేజర్ లాగ్లు ఎందుకో చెబుతాయి. B లో, సగం విజయవంతమయ్యే స్క్రిప్ట్ దానిని సృష్టించిన ప్రాసెస్ తర్వాత కూడా నిలిచే మార్గాలను వదిలివేస్తుంది. రెండింటినీ నడపడం అత్యంత చెడ్డ ఫలితం: రెండు ప్రాసెస్లు డిఫాల్ట్ మార్గాన్ని రాస్తాయి, బూట్ సమయంలో రెండు రిజాల్వర్ సవరణలు పోటీపడతాయి, మరియు తిప్పడానికి రెండు రహస్యాల సెట్లు.
ప్రతి సొరంగానికి ఒక యజమానిని ఎంచుకోండి మరియు ఏదైనా పరీక్షించే ముందు మరొకటి నిష్క్రియం చేయండి. ఇద్దరు యజమానులు అంటే సొరంగం పైన ఉన్నప్పుడు ఏదీ పరిష్కారం కానప్పుడు చూడటానికి రెండు ప్రదేశాలు కూడా. ఆ ఒకే నియమం Pi VPN చర్చలలో వివరించిన చాలా గందరగోళ స్థితులను నివారిస్తుంది.
దిగుమతి ఏమి సృష్టిస్తుంది, ఏమి సృష్టించదు
Raspberry Pi OS Bookworm మరియు తర్వాతి సంస్కరణలలో డిఫాల్ట్ నెట్వర్క్ కాన్ఫిగరేషన్ సాధనం NetworkManager, కాబట్టి క్లయింట్ సొరంగానికి ప్రొఫైల్ సహజ నివాసం. దిగుమతికి సరిపోయే ప్లగిన్ ఇన్స్టాల్ అయి ఉండాలి; అది లేకుండా దిగుమతి మద్దతు లేని కనెక్షన్ రకం గురించి సందేశంతో విఫలమవుతుంది, అదే ఆగి ప్లగిన్ ఇన్స్టాల్ చేయడానికి నిజాయితీ సంకేతం.
nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name
దిగుమతి ప్రొఫైల్ను నిల్వ చేస్తుంది. అది మరొక వైపు చేరుకోగలదని నిరూపించదు, మరియు ఫైల్లోని ప్రతి సూచన మార్పిడి నుండి బయటపడిందని హామీ ఇవ్వదు. ఫలిత కనెక్షన్ను తిరిగి చదివి గుర్తింపు మరియు విశ్వాసాన్ని మోసే భాగాలను తనిఖీ చేయండి: ధృవపత్రం, దూర హోస్ట్ మరియు పోర్ట్, మరియు పాస్వర్డ్ అడిగినా లేక నిల్వ చేసినా.
--ask తో సక్రియం చేయడం పంచుకున్న మెషీన్లో షెల్ చరిత్ర వెలుపల పాస్ఫ్రేజ్ను ఉంచుతుంది. పర్యవేక్షణ లేని Pi కోసం, చివరికి ప్రొఫైల్ బూట్ సమయంలో పైకి రావాలని మీరు కోరుకుంటారు, ఇది చేతితో ఒకసారి లేపడానికి భిన్నమైన నిర్ణయం.
పూర్తి సొరంగం, రెండు డిజైన్ల పోలికలో
పూర్తి సొరంగం అనేది మార్గాల గురించిన ప్రకటన, ఉద్దేశ్యం గురించి కాదు, మరియు రెండు డిజైన్లు దానిని వేర్వేరుగా వ్యక్తపరుస్తాయి. ప్రొఫైల్ విధానం మేనేజర్ను డిఫాల్ట్ మార్గాన్ని మరియు దాని రిజాల్వర్ సెట్టింగ్లను ఇన్స్టాల్ చేయమని అడుగుతుంది; స్క్రిప్ట్ విధానం స్క్రిప్ట్ చెప్పినట్లు చేస్తుంది, ఏమీ చేయకపోవడం కూడా. చెప్పకపోతే ఏ డిజైన్ IPv6 ను కవర్ చేయదు, మరియు తాకని IPv6 డిఫాల్ట్ మార్గం IPv4 పరిపూర్ణంగా కనిపిస్తున్నప్పుడు సొరంగం వెలుపలికి ట్రాఫిక్ను సంతోషంగా తీసుకెళ్తుంది.
ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org
మార్గ అన్వేషణకు డాక్యుమెంటేషన్ చిరునామాను ఉపయోగించి, తనిఖీ చేయడానికి అనుమతి ఉన్న హోస్ట్తో భర్తీ చేయండి. మొదటి ఆదేశం Pi సాధారణ గమ్యానికి ఏ ఇంటర్ఫేస్ ఉపయోగిస్తుందో చూపుతుంది; రెండవది IPv6 డిఫాల్ట్ మార్గం ఇంకా ఉందా అని చూపుతుంది; మూడవది ఏ రిజాల్వర్ సమాధానం ఇచ్చిందో నిరూపిస్తుంది. పూర్తి సొరంగం గురించి ఏ ప్రకటననైనా నమ్మే ముందు మూడింటినీ చదవండి.
సరఫరాదారు సూచనలు పూర్తి సొరంగాన్ని వాగ్దానం చేసినా IPv6 డిఫాల్ట్ మార్గం మిగిలి ఉంటే, Pi లీక్ అవుతోంది. అప్లింక్పై IPv6 ను నిష్క్రియం చేయండి లేదా ప్రొఫైల్ దానిని కోరాలని అడగండి, మరియు తర్వాత కనుగొనడం బదులు సచేతనంగా నిర్ణయించుకోండి.
తెరిచిన వైఫల్యం మూసిన వైఫల్యానికి వ్యతిరేకంగా
సొరంగం పడిపోయినప్పుడు, తన డిఫాల్ట్ మార్గాన్ని కోల్పోయే రూటింగ్ పట్టిక సులభంగా భౌతిక అప్లింక్కు తిరిగి వెళ్తుంది, మరియు ట్రాఫిక్ బహిరంగంగా కొనసాగుతుంది. అది తెరిచిన వైఫల్యం, మరియు ఏదైనా నిరోధించకపోతే అది రెండు డిజైన్ల డిఫాల్ట్ ప్రవర్తన. చాలామంది దానిని వారాల తర్వాత ఫైర్వాల్ లాగ్ చదివి కనుగొంటారు.
మూసిన వైఫల్యం సొరంగం క్రింద ఉన్నప్పుడు మీ దూర ప్రాప్యతను తీసుకెళ్తుంది, కాబట్టి నిర్వహణ మార్గానికి సచేతన మినహాయింపు అవసరం. ఒక మార్గం సొరంగం వెలుపల VPN తోటి చిరునామాను మాత్రమే అనుమతించే నియమం:
sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject
నిర్వహణ ఖర్చును నిజాయితీగా పోల్చండి. ప్రొఫైల్ సాధారణంగా ఈ నియమాన్ని వ్యక్తపరచలేదు, కాబట్టి మూసిన వైఫల్యం మిమ్మల్ని స్క్రిప్ట్ డిజైన్ వైపు లేదా సొరంగంతో సంబంధం లేకుండా నియమాన్ని ఇన్స్టాల్ చేసే చిన్న యూనిట్ వైపు నెట్టుతుంది. ఏ సందర్భంలోనైనా, ఒక వారం తిరస్కరాలను లాగ్ చేయండి: మౌన తిరస్కరం విరిగిన సేవలాగానే కనిపిస్తుంది, మరియు ఒక సైట్ లోడ్ అవడం ఆగిపోయిందని వినియోగదారు నివేదించినప్పుడు మీకు కౌంటర్ అవసరం అవుతుంది.
స్క్రీన్ లేని Pi కోసం ఎంపిక
ఇమేజ్ ఇప్పటికే NetworkManager ను నడుపుతుంటే, సొరంగానికి ప్రత్యేకమైనది ఏమీ అవసరం లేకపోతే, మరియు అది అప్లింక్ను స్వయంచాలకంగా అనుసరించాలని మీరు కోరుకుంటే, ప్రొఫైల్ తీసుకోండి. మీకు విధాన రూటింగ్, ప్రతి గమ్యానికి ఎంచుకున్న అనేక సొరంగాలు, లేదా సొరంగం పైకి రాకముందే ఉండాల్సిన మూసిన-వైఫల్య నియమం అవసరమైతే, స్క్రిప్ట్ తీసుకుని బూట్ క్రమం మరియు శుభ్రతతో సహా దాని ప్రతి భాగాన్ని కలిగి ఉండండి. రెండు డిజైన్లను కలపడం ఏదో ఒకదాని కంటే ఎక్కువ ఖర్చు అవుతుంది.
వాటి మధ్య మార్పిడి ప్రధానంగా క్రమం యొక్క విషయం: పాత యజమానిని నిష్క్రియం చేయండి, పాత మార్గం లేదా రిజాల్వర్ ఎంట్రీ మిగలలేదని నిర్ధారించండి, తర్వాత కొత్తదాన్ని సక్రియం చేసి రెండుసార్లు రీబూట్ చేయండి. ఒక రీబూట్ రెండవది బయటపెట్టే రేస్ను దాచగలదు. సొరంగాన్ని కాదు, Pi ను పరీక్షించి ముగించండి: ఒక పేరును పరిష్కరించండి, IPv4 ద్వారా ఏదైనా తీసుకురండి, ఉంచుకుంటే IPv6 ద్వారా కూడా తీసుకురండి, తర్వాత సొరంగాన్ని పడగొట్టి మీరు ఎంచుకున్న ప్రవర్తన నిజంగా జరుగుతుందని నిర్ధారించండి. ip link లో ఇంటర్ఫేస్ పరీక్ష ప్రారంభం, ముగింపు కాదు.