host-only నెట్వర్క్లో VM ట్రాఫిక్ను TUN OpenVPN సర్వర్ ద్వారా రూట్ చేయండి
టన్నెల్ మరియు host-only ప్రిఫిక్స్ను వేరుగా ఉంచండి, గెస్ట్ రూట్ను పుష్ చేయండి, ఆపై ప్రతి వర్చువల్ మెషీన్కు హోస్ట్ ద్వారా ఉద్దేశపూర్వకంగా తిరిగి వచ్చే మార్గాన్ని ఇవ్వండి.
host-only అడాప్టర్లు స్థానిక వర్చువల్ నెట్వర్క్ను సృష్టిస్తాయి, రూట్ చేసిన TUN టన్నెల్లు చిరునామాల మధ్య IP ప్యాకెట్లను తీసుకువెళతాయి. రెండూ ఒకదానికొకటి బ్రిడ్జ్ కావు, కాబట్టి పనిచేసే కాన్ఫిగరేషన్ ఎవరు ఫార్వర్డ్ చేస్తారు మరియు తిరిగి వచ్చే రూట్ ఎవరిది అని చెప్పాలి. ఈ రెండు కేటాయింపులు తప్పు అయితే, టన్నెల్ క్లయింట్ ఎప్పుడూ అడగని మూలంతో గెస్ట్ టన్నెల్కు జవాబిస్తుంది. క్రింది డిజైన్ రెండు ప్రిఫిక్స్లను వేరుగా ఉంచి తిరిగి వచ్చే మార్గాన్ని స్పష్టం చేస్తుంది.
రెండు నెట్వర్క్లు, రెండు ప్రిఫిక్స్లు
టన్నెల్ పూల్కు మరియు host-only నెట్వర్క్కు వేర్వేరు ప్రిఫిక్స్లు ఇవ్వండి మరియు ఒకదాన్ని మరొకదానికి ఎప్పుడూ తిరిగి ఉపయోగించవద్దు. ఈ ఉదాహరణలో VPN పూల్ 10.44.0.0/24, host-only నెట్వర్క్ 192.168.99.0/24, హోస్ట్ 192.168.99.1 వద్ద మరియు గెస్ట్ 192.168.99.20 వద్ద ఉన్నాయి. ఒకే ప్రిఫిక్స్ను TUN పరికరానికి మరియు host-only అడాప్టర్కు రెండింటికీ ఇవ్వడం వాటిని కలపదు. ఇది ఒక చిరునామా పరిధిపై రెండు దావాలను సృష్టిస్తుంది, రూటింగ్ పట్టిక తర్వాత యాదృచ్ఛికంగా ఉంచుకున్న దావా తరఫున సమాధానం ఇస్తుంది.
host-only అడాప్టర్ హోస్ట్పై మరియు గెస్ట్ లోపల రెండిటిలో ఉంటుంది, దానికి తనంతట తానే మెషీన్ నుండి బయటకు వెళ్లే మార్గం లేదు. బ్రిడ్జ్ మరియు NAT కనెక్షన్లకు వేర్వేరు ఎక్స్పోజర్ ఉంటుంది, ఒక గెస్ట్ సేవను చేరుకోవడానికి బ్రిడ్జ్ మోడ్కు మారడం అవసరం లేదు.
హోస్ట్ ఇప్పటికే మార్గాన్ని కలిగి ఉంది
ఏదైనా జోడించే ముందు ఏమి ఉందో చూడండి. హోస్ట్కు host-only నెట్వర్క్లో ఇంటర్ఫేస్ మరియు ఆ ప్రిఫిక్స్కు రూట్ ఉన్నాయి, రెండూ అడాప్టర్ లేచినప్పుడు సృష్టించబడ్డాయి.
ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward
మూడవ పంక్తి హోస్ట్ను హాప్గా మార్చే యంత్రాంగం. అది లేకుండా, టన్నెల్ నుండి వచ్చే ప్యాకెట్ హోస్ట్ చేరుకోగల కానీ ఫార్వర్డ్ చేయని నెట్వర్క్కు చిరునామా పొందుతుంది. ఫార్వర్డింగ్ అవసరం మరియు సరిపోదు. ఫిల్టర్ పాలసీ టన్నెల్ ఇంటర్ఫేస్ మరియు host-only ఇంటర్ఫేస్ మధ్య నిర్దిష్ట ప్రవాహం అనుమతించబడిందా అని ఇంకా నిర్ణయిస్తుంది, ఆ నిర్ణయం ఎవరూ చదవని డిఫాల్ట్ పాలసీలో కాకుండా లిఖితంగా ఉండాలి.
రూట్ను పుష్ చేయండి, ఆపై అది చేరుకునే దాన్ని ఫిల్టర్ చేయండి
పుష్ చేసిన రూట్లను అంగీకరించే క్లయింట్లకు సర్వర్ host-only ప్రిఫిక్స్ను అందించగలదు, ఇది టన్నెల్ వెనుక ఉన్న ఏదైనా ఇతర సబ్నెట్కు ఉపయోగించే అదే యంత్రాంగం.
push "route 192.168.99.0 255.255.255.0"
iptables -A FORWARD -i tun0 -o vboxnet0 -d 192.168.99.20 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o tun0 -s 192.168.99.20 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT
ఈ రెండు నియమాలు ఒక దిశలో ఒక సేవను మరియు దాని జవాబులను అనుమతిస్తాయి. మొత్తం ప్రిఫిక్స్ను చేరుకునే రూట్ మరియు ఒక పోర్టును అనుమతించే ఫిల్టర్ ఉద్దేశపూర్వక కలయిక; రూట్తో పాటు షరతులు లేని అంగీకారం అనేది ప్రయోగశాల సేవ బహిర్గత సేవగా మారే మార్గం. పుష్ చేసిన రూట్ కూడా అధికారం కాదు. క్లయింట్ దాన్ని అంగీకరిస్తుంది, హోస్ట్ దాన్ని ఫార్వర్డ్ చేస్తుంది, గెస్ట్ ఫైర్వాల్ మరియు సేవ స్వయంగా ఇంకా అభిప్రాయం చెబుతాయి.
గెస్ట్కు తిరిగి వచ్చే మార్గం కావాలి
10.44.0.x నుండి చేరుకునే గెస్ట్ తన జవాబులను హోస్ట్ యొక్క host-only చిరునామాకు పంపాలి, లేదా హోస్ట్ మూలాన్ని అనువదించాలి. VirtualBox DHCP నుండి చిరునామా పొందడం ఈ రెండు ఏర్పాట్ల గురించి ఏమీ చెప్పదు.
ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15
గెస్ట్ లోపల ఆ రూట్ను జోడించడం అసలు మూలాన్ని కాపాడుతుంది, ఇది ప్రతి క్లయింట్ పాలసీ మరియు లాగ్లను అర్థవంతంగా ఉంచుతుంది. హోస్ట్పై పరిమిత మూల అనువాదం ప్రత్యామ్నాయం, అది పనిచేస్తుంది, కానీ ఏ క్లయింట్ కనెక్ట్ అయిందో దాచే ఖర్చుతో. అతివ్యాప్తి మరొక వైఫల్య మార్గం. ఇంటి LAN ఇప్పటికే 192.168.99.0/24 ఉపయోగించే దూరపు క్లయింట్ పుష్ చేసిన రూట్ను తన నెట్వర్క్గా చదువుతుంది, సర్వర్ వైపు ఏ మార్పు ఆ అస్పష్టతను పరిష్కరించదు. ఒక వైపు మళ్లీ నంబర్ చేయండి లేదా ఢీకొనే అవకాశం తక్కువ ఉన్న ప్రిఫిక్స్ను ఎంచుకోండి.
TUN పరికరం IP ప్యాకెట్లను తీసుకువెళుతుంది, కాబట్టి గెస్ట్ లోపల డిఫాల్ట్ గేట్వే జోడించడం టన్నెల్ను host-only అడాప్టర్తో ఈథర్నెట్ విభాగంగా మార్చదు. TAP బ్రిడ్జ్ దాని స్వంత క్లయింట్ మద్దతు మరియు చిరునామా యాజమాన్యంతో వేరే డిజైన్, రెండు వివరణలను కలిపితే ఎప్పటికీ కలవని కాన్ఫిగరేషన్లు వస్తాయి.
ధృవీకరించండి, ఆపై రీస్టార్ట్ను తట్టుకునేలా చేయండి
సాధారణ దూరపు క్లయింట్ నుండి ఒక హానిచేయని సేవను పరీక్షించండి, గెస్ట్ యొక్క తిరిగి వచ్చే రూట్ను తనిఖీ చేయండి, మీరు అనుమతించని సేవ నెమ్మదిగా కాకుండా తిరస్కరించబడుతుందని నిర్ధారించండి.
ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20
ఆపై VPN సేవ మరియు వర్చువల్ మెషీన్ నెట్వర్కింగ్ను రీస్టార్ట్ చేసి అదే మూడు తనిఖీలను పునరావృతం చేయండి. చేతితో జోడించిన రూట్ తదుపరి రీబూట్ వరకు నిలిచి ఉంటుంది, వెచ్చని సెషన్లో మాత్రమే పనిచేసే కాన్ఫిగరేషన్ డిజైన్ కాదు. రెండు ప్రిఫిక్స్లు, ఫార్వర్డింగ్ పాలసీ మరియు గెస్ట్ రూట్ను కలిపి నమోదు చేయండి. తదుపరి వర్చువల్ మెషీన్ను జోడించే వారికి మూడూ అవసరం, అలా కాకుంటే ప్రతి విఫల కనెక్షన్లో వాటిని మళ్లీ కనుగొంటారు.