ఒక OpenVPN క్లయింట్ SSH ద్వారా మరొకదాన్ని చేరుకోనివ్వండి, పూల్ తెరవకుండా
client-to-client ను ఆఫ్లో ఉంచండి, కెర్నల్ ఒక ప్రవాహాన్ని ముందుకు పంపనివ్వండి, పూల్ మిగిలిన భాగం మూసి ఉండనివ్వండి. సర్వర్పై రెండు నియమాలు, గమ్యంపై ఒకటి.
ఒక క్లయింట్ మరొక క్లయింట్ యొక్క SSH సేవను చేరుకోవాలి, పూల్ మిగిలిన భాగం నేటికి ఉన్నంత వేరుగా ఉండాలి. ఆకర్షణీయమైన స్విచ్ client-to-client, ఇది అందరికీ ఒకేసారి సహచర ప్రవేశాన్ని ఆన్ చేసి, నిర్ణయాన్ని కెర్నల్కు బదులు OpenVPN కు ఇస్తుంది. ఇరుకైన సమాధానం ఆ స్విచ్ను ఆఫ్లో ఉంచి, సర్వర్ స్వంత రూటింగ్ మరియు ఫైర్వాల్ సరిగ్గా ఒక ప్రవాహాన్ని మోయనిస్తుంది.
నియమం పాఠం కంటే యంత్రాంగం ముఖ్యం, ఎందుకంటే రెండు విధానాలు ప్యాకెట్ను వేర్వేరు చోట్ల ఉంచుతాయి. మీరు ఏది ఎంచుకున్నారో తెలియడం ఏమీ చేయనట్టు కనిపించే నియమాన్ని మరియు అది లేకుండా కలిసే సహచరుడిని రెండింటినీ వివరిస్తుంది.
client-to-client ప్యాకెట్ను ఎక్కడికి కదిలిస్తుంది
client-to-client ఆన్లో ఉన్నప్పుడు, సర్వర్ సహచరుడి ప్యాకెట్ను టన్నెల్ పరికరం నుండి తిరిగి బయటకు పంపకుండా లోపలే ముందుకు పంపుతుంది, కాబట్టి ప్యాకెట్ ఎప్పుడూ కెర్నల్ ఫార్వార్డింగ్ మార్గానికి చేరుకోదు. ఇది సౌకర్యవంతం మరియు మీ ఫైర్వాల్ పర్యవేక్షించవలసిన ప్రవాహాన్ని ఎప్పుడూ చూడదని కూడా అర్థం. ఎంపికను ఆఫ్లో ఉంచితే సర్వర్ ప్యాకెట్ను అదే ఇంటర్ఫేస్ ద్వారా తిరిగి బయటకు పంపుతుంది, ఇది దానిని netfilter ముందు ఉంచుతుంది. అదే ఇంటర్ఫేస్ లోపలికి, అదే బయటకు, మరియు FORWARD గొలుసుకు మాట ఉంది.
మార్పిడి స్పష్టం: ఒక విధాన బిందువు పొందుతారు, షార్ట్కట్ మీ కోసం చేసిన రూటింగ్ మరియు ఫార్వార్డింగ్ను మీరు తీసుకుంటారు. ఆ పని ఒక ప్రవాహానికి చిన్నది, మీరు జోడించే ప్రతి మినహాయింపుతో పెరుగుతుంది. మినహాయింపులను ఇప్పుడే లెక్కించండి, ఎందుకంటే సహచరుల మధ్య విధానం నిజంగా నిబంధనల సమితిలోనే నివసిస్తుంది.
సహచరుడి ప్యాకెట్ నిజంగా వెళ్లే మార్గం
Linux Community OpenVPN 2.6 సేవ, DCOకు బదులు వినియోగదారు స్థలంలో TUN ప్రాసెసింగ్, సబ్నెట్ టోపాలజీ, tun0, మరియు క్లయింట్ A 10.44.0.21 లో, క్లయింట్ B 10.44.0.37 లో ఉన్న 10.44.0.0/24 పూల్ అనుకోండి. సబ్నెట్ టోపాలజీలో A పొందిన చిరునామా మరియు నెట్మాస్క్ ఇప్పటికే పూల్ను కవర్ చేస్తాయి, కాబట్టి A అదనపు నెట్టబడిన రూట్ లేకుండా ప్యాకెట్ను టన్నెల్ పరికరానికి పంపుతుంది. Aపై ప్రభావవంతమైన రూట్ను తనిఖీ చేయండి, ఊహించకండి.
సర్వర్లో ప్యాకెట్ Bకు చిరునామా చేయబడి వస్తుంది, అది స్థానిక చిరునామా కాదు, కాబట్టి అది ముందుకు పంపబడుతుంది. ఇది జరగడానికి IPv4 ఫార్వార్డింగ్ ఆన్లో ఉండాలి, మరియు రూట్ శోధన ప్యాకెట్ను తిరిగి tun0 ద్వారా బయటకు పంపాలి. అందువల్ల ఫైర్వాల్ రెండు వైపులా అదే ఇంటర్ఫేస్ ఉన్న ఫార్వార్డ్ చేయబడిన ప్రవాహాన్ని చూస్తుంది, మరియు ఇదే చాలా నియమ సమితులు మిస్ అయ్యే సూక్ష్మ విషయం. ఇక్కడ మూల అనువాదం అవసరం లేదు, మరియు A చిరునామాను చెక్కుచెదరకుండా ఉంచడమే B తన స్వంత మూల ఆధారిత నియమాన్ని వర్తించడానికి అనుమతిస్తుంది.
సర్వర్పై రెండు నియమాలు, ఈ క్రమంలో
మూడు నియమాలు మొత్తం అనుమతిని మోస్తాయి: ఫార్వార్డింగ్, జత మినహాయింపు, మరియు టన్నెల్ జతకు డిఫాల్ట్ డ్రాప్. అంగీకార నియమం జతను మరియు సేవను పేర్కొంటుంది, కాబట్టి అనుమతి పెరుగుతున్న పూల్లో నిలిచి ఉంటుంది. టన్నెల్-నుండి-టన్నెల్ ట్రాఫిక్కు ఏదైనా సాధారణ నిరాకరణకు ముందు దాన్ని ఉంచండి, ఎందుకంటే మొదటి సరిపోలికే గెలుస్తుంది:
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o tun0 -s 10.44.0.21 -d 10.44.0.37 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -j DROPఆ ఆదేశాలు ఉదాహరణలు మరియు మీ హోస్ట్ నియమాలను నిల్వ చేయడానికి ఉపయోగించే యంత్రాంగానికి చెందుతాయి; నడుస్తున్నప్పుడు చేర్చిన నియమం తదుపరి బూట్లో మాయమవుతుంది. స్థితి ఉన్న నియమమే B యొక్క ప్రతిస్పందనలు మరియు TCP హ్యాండ్షేక్ రెండవ, ప్రతిబింబిత అంగీకారం లేకుండా తిరిగి రావడానికి అనుమతిస్తుంది.
తర్వాత నియమాల జాబితా కాదు, కౌంటర్లను తనిఖీ చేయండి, ఎందుకంటే ఎప్పుడూ సరిపోలని నియమం పనిచేసే దానిలా కనిపిస్తుంది. కౌంటర్లు సున్నాలో ఉంటే, ప్యాకెట్ మీరు అనుకున్న మార్గాన్ని తీసుకోవడం లేదు.
B ఇంకా ఏమి అనుమతించాలి
SSH సేవను B నడుపుతుంది, కాబట్టి టన్నెల్ చిరునామాపై ఏదైనా వింటోందా మరియు దాని స్వంత హోస్ట్ ఫైర్వాల్ మూలాన్ని అంగీకరిస్తుందా అని B నిర్ణయిస్తుంది. సర్వర్పై ఇచ్చిన నెట్వర్క్ అనుమతి Bపై ఏ ఖాతాకూ అనుమతి కాదు, మరియు హోస్ట్ కీ ధృవీకరణ మరియు వినియోగదారు ప్రామాణీకరణ ఎక్కడి నుండి వచ్చినా వర్తిస్తాయి.
మొదట సానుకూల సందర్భాన్ని పరీక్షించండి: A నుండి B యొక్క టన్నెల్ చిరునామాకు కొత్త SSH కనెక్షన్, ఆశించిన హోస్ట్ కీతో అంగీకరించబడాలి. తర్వాత మరొక సహచరుడిని లేదా మరొక పోర్టును పరీక్షించి అది తిరస్కరించబడుతుందని నిర్ధారించండి, ఎందుకంటే నిశ్శబ్దంగా అన్నింటినీ అనుమతించే అనుమతి అది ముఖ్యమయ్యే వరకు పనిచేసే దాని నుండి వేరు చేయలేము. ఆ పరీక్షలో రెండు భాగాలు అవసరం, రెండవదే ప్రజలు దాటేయునది.
కేటాయించిన చిరునామాలు, రెండు క్లయింట్లపై ప్రభావవంతమైన రూట్లు మరియు సర్వర్పై, Bపై ఖచ్చితమైన నియమాలను నమోదు చేయండి. గేట్వేకు విజయవంతమైన ping లేదా సర్వర్పై తెరిచిన పోర్టు వీటిలో ఏదీ నిరూపించదు, ఎందుకంటే సహచరుల మధ్య ఫార్వార్డింగ్ ఇంకా నిరోధించబడి ఉన్నప్పుడు రెండూ నిజం కావచ్చు. ఆ సంఖ్యలను టన్నెల్ పైన ఉన్నప్పుడు రాయండి, ఎందుకంటే తిరిగి కనెక్ట్ అయిన తర్వాత క్లయింట్ పొందే చిరునామా మరొకటి కావచ్చు.