సర్వర్ కొత్త చిరునామాకు మారింది, క్లయింట్లు ఇప్పటికీ కనెక్ట్ అవుతున్నాయి, మరియు వారు పంపేది ఏదీ ఇంటర్నెట్కు చేరుకోలేదు. ఆ విభజనే ఆధారం: వినే సాకెట్ మరియు పోర్ట్ ఫార్వర్డింగ్ మార్పును దాటి నిలిచాయి, కాబట్టి టనెల్ పైకి వస్తుంది, కానీ ఫార్వర్డ్ చేసిన ప్యాకెట్లపై వర్తించే మూల అనువాదం ఇప్పటికీ హోస్ట్ వద్ద లేని చిరునామానే పేర్కొంటుంది. తిరిగి రాసిన ఆ ప్యాకెట్లకు సమాధానాలు ఇక లేని యంత్రానికి వెళ్తాయి.

కనెక్ట్ అవ్వడం మరియు ఫార్వర్డింగ్ వేర్వేరు చోట్ల విఫలమవుతాయి

స్థాపన క్లయింట్లకు ఇప్పటికే తెలిసిన ముగింపు బిందువుపై ఆధారపడి ఉంటుంది: పబ్లిక్ చిరునామా, దాని ముందున్న పోర్ట్ ఫార్వర్డింగ్ మరియు లోపలి శ్రోత. ఫార్వర్డ్ చేసిన ట్రాఫిక్ ప్యాకెట్ టనెల్లోకి ప్రవేశించిన తర్వాత తీసుకునే రెండవ నిర్ణయంపై ఆధారపడి ఉంటుంది, అప్పుడు హోస్ట్ తన మూలాన్ని తిరిగి రాస్తుంది, సమాధానాలు తిరిగి వెళ్లే దారిని కనుగొనడానికి.

చిరునామా మార్పు రెండవ నిర్ణయాన్ని మాత్రమే విరగ్గొడుతుంది, అందుకే లక్షణం "కనెక్ట్ అయింది కానీ ఇంటర్నెట్ లేదు" అని చదవబడుతుంది. క్లయింట్ వైపు సాధారణ తనిఖీలు ఆరోగ్యంగా కనిపించడానికి కూడా ఇదే కారణం: హ్యాండ్షేక్ పూర్తవుతుంది, క్లయింట్కు చిరునామా లభిస్తుంది, సర్వర్ టనెల్ చిరునామాకు ping కూడా సమాధానం ఇవ్వగలదు. లోపం మరో వైపు ఉన్నా క్లయింట్పై గంటలు వృథా అవుతాయి, అందుకే నియమాల పట్టిక మొదట చూడాల్సిన చోటు.

సవరించే ముందు నియమాన్ని మరియు దాని కౌంటర్లను చదవండి

కౌంటర్లతో అనువాద నియమాలను జాబితా చేసి, కాన్ఫిగర్ చేసిన మూలాన్ని హోస్ట్ నిజంగా కలిగి ఉన్న చిరునామాలతో పోల్చండి. చనిపోయిన చిరునామాకు తిరిగి రాసిన నియమం సాధారణంగా లోపలికి వెళ్లే మార్గంలో ట్రాఫిక్ను చూపిస్తుంది, ఎందుకంటే ప్యాకెట్లు దాన్ని చేరి అనువదించబడతాయి, తిరిగి వచ్చే మార్గంలో ఏమీ ఉండదు.

sudo iptables -t nat -L POSTROUTING -n -v --line-numbers
ip -4 addr show

అక్కడ ఉన్నప్పుడు మూడు ఫీల్డ్లను తనిఖీ చేయండి: మూల సరిపోలికలోని పూల్, నియమం ఒకదాన్ని పేర్కొంటే ఎగ్జిట్ ఇంటర్ఫేస్, మరియు టనెల్ల మధ్య ట్రాఫిక్ తిరిగి రాయబడకుండా నిరోధించే మినహాయింపు. సవరణ సమయంలో ఆ మినహాయింపును కోల్పోవడం సులభం, దాన్ని కోల్పోతే సహచరుల మధ్య ట్రాఫిక్ పని చేస్తున్నట్టు కనిపిస్తుంది, కానీ దాని సమాధానాలు వింత మార్గం తీసుకుంటాయి.

కౌంటర్లు సున్నా వద్ద నిలిచి ఉంటే, ప్యాకెట్లు ఎప్పటికీ ఈ నియమానికి చేరుకోవు మరియు చిరునామా ప్రస్తుత సమస్య కాదు. గొలుసులో ముందున్న పోటీ నియమాన్ని వెతకండి, అసలైనదాన్ని సవరించకుండా ఎవరైనా ప్రత్యామ్నాయాన్ని జోడించినప్పుడు ఇది జరుగుతుంది. ఒక నిమిషం ముందు రాసుకున్న అవుట్పుట్తో నియమ సంఖ్యలను పోల్చండి. క్రమం కాన్ఫిగరేషన్లో భాగం, అలంకార వివరం కాదు.

మూలాన్ని మార్చండి, లేదా దాన్ని పేర్కొనడం ఆపండి

హోస్ట్కు స్థిరమైన చిరునామా ఉంటే, మరొకటి జోడించడం బదులు నియమాన్ని దాని స్థానంలోనే మార్చండి. నియమ సంఖ్య ద్వారా మార్చడం గొలుసులో మిగిలిన భాగం ఆధారపడే క్రమాన్ని కాపాడుతుంది.

sudo iptables -t nat -R POSTROUTING 1 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source 10.151.0.40

చిరునామా చైతన్యంగా కేటాయించబడినప్పుడు, ఏ మూలాన్నీ పేర్కొనకండి మరియు ఎగ్జిట్ ఇంటర్ఫేస్ నుండి ప్రస్తుతదాన్ని ఎంచుకోవడానికి కెర్నల్కు అనుమతించండి. ఆ రూపం తదుపరి మార్పును సవరణ లేకుండా దాటుతుంది, ఏ చిరునామా ఉపయోగించబడిందో దాచే ధరకు.

sudo iptables -t nat -R POSTROUTING 1 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -o eth0 -j MASQUERADE

IPv4 ఫార్వర్డింగ్ నిర్వహిత కాన్ఫిగరేషన్ ద్వారా ఇప్పటికీ ప్రారంభంలో ఉందని నిర్ధారించుకోండి, తర్వాత పంపిణీ యొక్క స్వంత విధానంతో నియమాన్ని శాశ్వతం చేయండి. నడుస్తున్న కెర్నల్లో మాత్రమే చేసిన మార్పు తదుపరి రీబూట్తో తిరిగి వస్తుంది, సాధారణంగా ఎవరూ మార్పుతో లింక్ చేయని నిర్వహణ విండోలో.

ప్రత్యామ్నాయాన్ని తప్పుగా చేయడానికి రెండు మార్గాలు

పూల్ను సర్వర్ LAN చిరునామా బదులు దాని టనెల్ చిరునామాకు అనువదిస్తే సమాధానాలు నేరుగా టనెల్లోకి తిరిగి వెళ్తాయి, అక్కడ అవి ఎప్పుడూ అడగని క్లయింట్ వైపు మార్గనిర్దేశం చేయబడతాయి. కనెక్షన్ రూటింగ్ లూప్ లాగా ఆగిపోతుంది, ఎందుకంటే అది నిజంగా లూప్.

పాత దానిపై రెండవ అనువాదాన్ని పోగు చేయడం మరో తప్పు. మొదట సరిపోలే నియమం గెలుస్తుంది, కాబట్టి పాత ఎంట్రీ తొలగించబడే వరకు ప్యాకెట్లను నిర్వహిస్తుంది, కొత్త నియమం కౌంటర్లు సున్నా వద్దే ఉంటాయి, కానీ అందరూ ప్రత్యామ్నాయాన్నే నిందిస్తారు. కొత్తది ఏదైనా జోడించే ముందు నకలును తొలగించండి. తర్వాత జాబితాను మరోసారి చదివి, పూల్కు సరిగ్గా ఒకే అనువాదం సరిపోలుతుందని నిర్ధారించుకోండి.

టనెల్ IPv6 కూడా మోస్తే, మొత్తం సమీక్షను మరో స్టాక్పై పునరావృతం చేయండి. అనువాదం మరియు మార్గనిర్దేశిత ప్రీఫిక్స్ లేని IPv6 డిఫాల్ట్ మార్గం అదే స్థాయిలో నిశ్శబ్దంగా విఫలమవుతుంది, దాని పైనున్నవన్నీ ఒకేలా కనిపించడం వల్ల దాన్ని మరచిపోవడం సులభం.

లోపలికి వచ్చే సేవలకు వ్యతిరేక అనువాదం కావాలి

VPN క్లయింట్పై ఉన్న సేవ బయటి నుండి చేరుకోగలిగి ఉండాలంటే దానికి గమ్యస్థాన అనువాదం కావాలి, మూల అనువాదం కాదు: పబ్లిక్ పోర్ట్ లోపలికి రాకముందే క్లయింట్ టనెల్ చిరునామాకు తిరిగి రాయబడుతుంది. తర్వాత ఫార్వర్డ్ మార్గానికి ఆ ట్రాఫిక్ను అనుమతించే స్పష్టమైన నియమం కావాలి.

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.9.8.2:8080

టనెల్ను తానే మోసే పోర్టును ఎప్పటికీ అనువదించకండి, ఎందుకంటే ఆ మళ్లీ రాయడం సేవను చేరుకోగలిగేలా ఉంచే కనెక్షన్ను తెంపేస్తుంది. టనెల్ పోర్టును గమ్యస్థాన నియమాల నుండి పూర్తిగా బయట ఉంచండి. చివరగా రెండు చివరల నుండి ధృవీకరించండి: కొత్త నియమంపై కౌంటర్లు, టనెల్ పరికరంపై చిన్న క్యాప్చర్, మరియు పబ్లిక్ చిరునామాను ప్రయత్నించే ముందు టనెల్ లోపలి చిరునామాకు ఒక అభ్యర్థన.

సంబంధిత వ్యాసాలు