VirtualBox VPN ప్రయోగశాల: గేట్వే VM లేదా హోస్ట్-మాత్ర నెట్వర్క్
VirtualBox VPN ప్రయోగశాలకు రూట్ చేయబడిన గేట్వే VM లేదా హోస్ట్-మాత్ర విభాగాన్ని ఎంచుకోండి, తర్వాత సొరంగం పడిపోయినప్పుడు అతిథిని మూసుకున్న వైఫల్యంగా మార్చండి.
మీ VPN ప్రయోగశాలకు ఎంత యంత్రం అవసరమో మీరు నిర్ణయించుకోవాలి. రెండు VirtualBox విభాగాల మధ్య రూట్ చేయబడిన గేట్వే VM చిరునామా అనువాదం, తిరిగి వచ్చే మార్గం మరియు నిజమైన క్లయింట్ కూర్చునే firewall స్థానాన్ని తిరిగి సృష్టిస్తుంది. ఒకే హోస్ట్-మాత్ర విభాగం మీకు ఒక నియంత్రిత తలుపును మాత్రమే ఇస్తుంది, మరేమీ లేదు. గేట్వే వెర్షన్కు మూడు అతిథులు మరియు మీరు నిర్వహించే రూటింగ్ పట్టిక అవసరం; హోస్ట్-మాత్ర వెర్షన్కు ఒక అతిథి మరియు ఒక విధానం అవసరం. మూడు ప్రశ్నలు వాటిని వేరు చేస్తాయి, మూడవది మీ పరీక్ష అసలు ఉత్తీర్ణం కాగలదా అని నిర్ణయిస్తుంది.
ఏదైనా క్లోన్ చేయడానికి ముందు మూడు ప్రశ్నలకు సమాధానం ఇవ్వండి
VPN సర్వర్ ఏమి గమనించాలో దానితో ప్రారంభించండి. పరీక్షా అతిథిది కాని మూల చిరునామాను సర్వర్ చూడాల్సి ఉంటే, వాటి మధ్య ఏదో అనువాదం చేయాలి, ఆ ఏదో మీరు నియంత్రించే రౌటర్ అయి ఉండాలి. హోస్ట్-మాత్ర నెట్వర్కింగ్ హోస్ట్కు అతిథి విభాగంలో అడాప్టర్ ఇస్తుంది, అనువాదకుడు కాదు. తర్వాత అతిథి బయట ఏదైనా చేరుకోవాల్సి వచ్చినప్పుడు, మీరు NAT అడాప్టర్ను కలుపుతారు, VirtualBox స్వంత NAT ఇంజిన్ మీని అడగకుండా మూలాన్ని తిరిగి రాస్తుంది.
తర్వాత, సొరంగం తప్ప మరేదైనా అతిథి చేరుకోగలదా అని అడగండి. ఆ సమాధానం లోపలి లేదా హోస్ట్-మాత్రను ఎంచుకుంటుంది, ఇదే చాలా ప్రయోగశాల రచనలు దాటవేసే ప్రశ్న. చివరగా, సొరంగం పడిపోయినప్పుడు ఏమి జరగాలో అడగండి, ఎందుకంటే అది టోపోలజీ కాదు, విధానాన్ని నిర్ణయిస్తుంది, సంతోషకరమైన మార్గాన్ని మాత్రమే నిరూపించే ప్రయోగశాల దాదాపు ఏమీ పరీక్షించలేదు.
| What the test requires | Routed gateway VM | Host-only guest |
|---|---|---|
| Server sees a translated source address | Yes, from your own MASQUERADE rule | No, VirtualBox NAT does it instead |
| The guest has exactly one egress | Yes, while the second adapter faces the tunnel | Only until a NAT adapter is attached |
| Policy is testable during a tunnel failure | Rules live in one place | Rules live on each guest |
మూడు పాత్రలను లోపలి నెట్వర్క్లతో కలపండి
మూడు అతిథులు మరియు రెండు పేరున్న విభాగాలను ఉపయోగించండి, రెండింటిలోనూ అడాప్టర్ ఉన్న ఏకైక యంత్రం గేట్వేగా ఉండాలి:
VBoxManage modifyvm lab-client --nic1 intnet --intnet1 WAN
VBoxManage modifyvm lab-server --nic1 intnet --intnet1 LAN
VBoxManage modifyvm lab-gw --nic1 intnet --intnet1 WAN --nic2 intnet --intnet2 LAN
లోపలి నెట్వర్క్కు ప్రత్యేక సృష్టి దశ లేదు. --intnet1 లోని స్ట్రింగ్ స్వయంగా విభాగం: పేరు సరిగ్గా సరిపోలినప్పుడు మాత్రమే రెండు యంత్రాలు దాన్ని పంచుకుంటాయి, హోస్ట్లో ఏదీ దానికి కలపబడలేదు. ఈ చివరి లక్షణమే ప్రయోగశాల శుభ్రంగా పునరావృతమయ్యే కారణం, ఎందుకంటే హోస్ట్ మార్గాలు, దాని స్వంత VPN క్లయింట్ మరియు దాని firewall ప్రమాదవశాత్తు అతిథులను చేరుకోలేవు. లోపలి విభాగంలో DHCP సర్వర్ కూడా ఉండదు, మీరు ఒకటి జోడించకపోతే, కాబట్టి స్థిర చిరునామాలు అతి చిన్న మార్గం.
క్లయింట్కు దాని WAN చిరునామా మాత్రమే ఇవ్వండి, డిఫాల్ట్ గేట్వే గేట్వే WAN చిరునామా వైపు చూపాలి. సర్వర్ LAN చిరునామా పొంది గేట్వే LAN చిరునామాను తన డిఫాల్ట్ గేట్వేగా ఉపయోగిస్తుంది. ఒక విభాగంలో రెండు చిరునామాలు ఉంచుకునే, లేదా మరొక విభాగానికి దారి తప్పిన మార్గం ఉన్న అతిథికి రౌటర్ చుట్టూ మార్గం ఉంటుంది, క్రింది పరీక్షలు మీకు అబద్ధం చెబుతాయి.
VM పేర్ల పక్కన నాలుగు చిరునామాలు మరియు రెండు విభాగ పేర్లు ఉన్న వచన ఫైల్ను ఉంచి ప్రతి shell లో అతికిస్తాను. వారాల తర్వాత, ప్రొఫైల్ మార్పు ఏదైనా పగలగొట్టినప్పుడు, ఆ ఫైలే ప్రొఫైల్ను డీబగ్ చేయడం మరియు నా స్వంత జ్ఞాపకాన్ని డీబగ్ చేయడం మధ్య తేడా.
లీక్ కాకూడని విభాగానికి లోపలి లేదా హోస్ట్-మాత్ర ఎంచుకోండి
హోస్ట్-మాత్ర మోడ్ హోస్ట్పైనే వర్చువల్ అడాప్టర్ను సృష్టిస్తుంది, సాధారణంగా vboxnet0, మరియు హోస్ట్కు అతిథి విభాగంలో చిరునామా ఇస్తుంది. ఇది నిర్వహణకు సౌకర్యవంతం మరియు ఐసోలేషన్ పరీక్షకు ప్రాణాంతకం, ఎందుకంటే హోస్ట్ ఇప్పుడు అతిథిని నేరుగా చేరుకోగలదు, హోస్ట్ వైపు ప్రతి సేవ సాధ్యమైన మార్గమవుతుంది. లోపలి మోడ్లో హోస్ట్ అడాప్టర్ అసలే ఉండదు. రెండు మోడ్లు నెట్వర్క్ సెట్టింగ్స్ ప్యానెల్లో సులభంగా గందరగోళానికి గురవుతాయి, కాబట్టి లేబుల్ కాదు, డాక్యుమెంట్ చేసిన తేడాను తనిఖీ చేయండి (VirtualBox నెట్వర్కింగ్ వివరాలు పేజీ చూడండి).
సొరంగాన్ని తప్పనిసరిగా ఉపయోగించాల్సిన అతిథికి లోపలిది సురక్షితమైన డిఫాల్ట్, గేట్వే ఏకైక నిష్క్రమణ. మీరు హోస్ట్-మాత్ర ఉంచుకుంటే, హోస్ట్ అడాప్టర్ను నిర్వహణ మార్గంగా పరిగణించి దాన్ని గట్టిగా చెప్పండి: హోస్ట్ అతిథిని చేరుకోవచ్చు, అతిథి హోస్ట్ను నిష్క్రమణగా ఉపయోగించలేకూడదు.
VBoxManage modifyvm lab-client --nic1 hostonly --hostonlyadapter1 vboxnet0
మీరు నిరూపించగల ఐసోలేషన్ మీరు కాన్ఫిగర్ చేసిన ఐసోలేషన్. ఒక లోపలి అడాప్టర్, గేట్వేపై డిఫాల్ట్ మార్గం మరియు NAT అడాప్టర్ లేని అతిథికి గేట్వేను దాటవేసే మార్గం లేదు. హోస్ట్-మాత్ర అడాప్టర్ మరియు NAT అడాప్టర్ ఉన్న అతిథికి రెండు మార్గాలు ఉంటాయి, వాటిలో ఒకటి మాత్రమే మీరు పరీక్షించాలనుకున్న మార్గం.
గేట్వేపై రూట్ మరియు అనువాదం చేయండి, తర్వాత అది మూసుకున్న వైఫల్యంగా మారనివ్వండి
VirtualBox విభాగాల మధ్య ఫార్వార్డ్ చేయదు; అతిథి చేస్తుంది. VPN సర్వర్ VM గేట్వే వెనుక ఉన్నప్పుడు, ఫార్వార్డింగ్ను ప్రారంభించి క్లయింట్ ట్రాఫిక్ సర్వర్ వైపు బయలుదేరుతున్నప్పుడు అనువాదం చేయండి:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
ఆ నియమంతో సర్వర్ క్లయింట్ బదులు గేట్వే LAN చిరునామాను చూస్తుంది, ఆపరేటర్ NAT వెనుక ఉన్న నిజమైన క్లయింట్ నెట్వర్క్ తలకు అలాగే కనిపిస్తుంది. sysctl విలువను /etc/sysctl.d/ లో, నియమాన్ని పంపిణీ ఉపయోగించే firewall సేవలో సేవ్ చేయండి, లేకపోతే రీబూట్ ప్రయోగశాలను నిశ్శబ్దంగా రూట్ చేయబడిన కానీ అనువదించని స్థితికి తిరిగి తెస్తుంది.
ఫార్వార్డింగ్ అనుమతి కాదు. ACCEPT యొక్క డిఫాల్ట్ FORWARD విధానం క్రింద, డిఫాల్ట్ మార్గం గేట్వే వైపు చూపే అతిథి సొరంగం ఉన్నా లేకున్నా రూటింగ్ పట్టిక ఎంచుకునే ఇంటర్ఫేస్ ద్వారా బయటకు వెళ్తుంది. గేట్వేలో ప్యాకేజీ ఇన్స్టాల్ కోసం NAT అడాప్టర్ కూడా ఉంటే, సొరంగం పడిపోయే క్షణంలో ఆ అడాప్టర్ పనిచేసే ఎన్క్రిప్షన్ లేని నిష్క్రమణ, మీ VPN-మాత్ర పరీక్ష ఎప్పుడూ VPN-మాత్ర పరీక్ష కాదు.
సర్వర్ దూరంగా ఉన్నప్పుడు సొరంగాన్ని గేట్వేయే ముగించినప్పుడు, అదే నిర్ణయం ఇంటర్నెట్ను చేరుకునే NIC వైపు కాదు, సొరంగ ఇంటర్ఫేస్ వైపు చూపుతుంది:
iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
సొరంగం స్వంత బాహ్య రవాణా మరియు బ్యాండ్ వెలుపలి నిర్వహణ మార్గాన్ని ఫార్వార్డ్ అయ్యే ట్రాఫిక్ నుండి వేరుగా ఉంచండి. గేట్వేను బాగుచేయడానికి ఏకైక మార్గం మీరు డీబగ్ చేస్తున్న సొరంగం అయితే, ప్రయోగశాల లాకౌట్ వ్యాయామంగా మారుతుంది. సీరియల్ కన్సోల్, హోస్ట్-మాత్ర నిర్వహణ అడాప్టర్, లేదా తెలిసిన మంచి స్థితి స్నాప్షాట్ చేతితో పగిలిన రౌటర్ను తిరిగి పొందడం కంటే చౌక.
మార్గాన్ని హోస్ట్ నుండి కాదు, అతిథి నుండి ధృవీకరించండి
బయటకు పని చేయండి. క్లయింట్ గేట్వే WAN చిరునామాను చేరుకుంటుంది, తర్వాత గేట్వే ద్వారా సర్వర్ను చేరుకుంటుంది, తర్వాత VPN పోర్టుకు కనెక్షన్ బయటకు వెళ్లి తిరిగి వస్తుందని నిర్ధారించండి. గేట్వే రెండు ఇంటర్ఫేస్లపై క్యాప్చర్ సమాధానం వస్తుందా మరియు తిరిగి వచ్చే మార్గంలో పడేయబడుతుందా చూపుతుంది, క్లయింట్పై మాత్రమే క్యాప్చర్ దాన్ని వేరు చేయలేదు:
tcpdump -ni eth0 udp port 1194
tcpdump -ni tun0 udp port 1194
తర్వాత నిష్క్రమణను నిరూపించండి. అతిథి నుండి చిరునామా ప్రతిబింబ సేవను ఏ మూలాన్ని చూస్తుందో అడిగి దాన్ని గేట్వే స్వంత నిష్క్రమణ చిరునామాతో పోల్చండి; సమాధానం హోస్ట్ చిరునామాతో సరిపోలితే, సొరంగం చుట్టూ మార్గం ఉంది. అతిథి నిజంగా ఏ రిజాల్వర్ను ఉపయోగిస్తుందో తనిఖీ చేయండి, IPv6 ను విడిగా తనిఖీ చేయండి, ఎందుకంటే IPv6 ప్రారంభించబడి సొరంగం IPv4 మాత్రమే మోసే విభాగం ప్రమాదవశాత్తు కాదు, రూపకల్పన వల్లనే లీక్ అవుతుంది.
చివరగా, దాన్ని ఉద్దేశపూర్వకంగా పగలగొట్టండి. సొరంగాన్ని ఆపండి, లేదా దాని బాహ్య పోర్టును నిరోధించండి, అతిథి నుండి కొత్త కనెక్షన్ తెరవండి. అది విఫలం కావాలి, కారణం మీరు పేరు పెట్టగలిగేదిగా ఉండాలి: మార్గం లేదు, తిరస్కరణ నియమం ఉంది, లేదా రిజాల్వర్ చనిపోయింది. సొరంగాన్ని మళ్లీ ప్రారంభించి అతిథి నెట్వర్క్ను తిరిగి నిర్మించకుండా కోలుకుంటుందని నిర్ధారించండి. Hamachi లేదా ZeroTier వంటి mesh VPN ప్రయోగశాలను పంచుకుంటే, బ్రిడ్జ్ చేసిన అడాప్టర్ mesh ను కాదు, అడాప్టర్ పేరును అనుసరిస్తుందని గుర్తుంచుకోండి, కాబట్టి క్లయింట్ తన స్వంత వర్చువల్ అడాప్టర్ను ఇన్స్టాల్ చేసిన తర్వాత బ్రిడ్జ్ మళ్లీ చూపించాలి.
VBoxManage list bridgedifs
VBoxManage modifyvm lab-client --bridgeadapter1 <mesh-adapter-name>
అతిథి సొరంగాన్ని హోస్ట్తో పంచుకోవడం సమస్యను ప్రతిబింబిస్తుంది. హోస్ట్ డిఫాల్ట్ మార్గాన్ని అతిథి వైపు చూపించడం పనిచేస్తుంది, అతిథి లోపలి proxy కూడా పనిచేస్తుంది; హోస్ట్ ద్వారా NAT హోస్ట్ ప్రారంభించిన ట్రాఫిక్కు అతిథి సొరంగాన్ని మోయదు. విభాగ పేర్లు మరియు firewall నియమాలను ఒకే చోట సేవ్ చేయండి, పనిచేసే స్థితి స్నాప్షాట్ తీసుకోండి, సర్వర్ గమనించిన మూల చిరునామాను నమోదు చేయండి. అప్పుడు తదుపరి ప్రొఫైల్ మార్పు తిరిగి నిర్మించిన ప్రయోగశాలకు బదులు ఒక స్క్రిప్ట్ రన్ ఖర్చవుతుంది.