VPN ప్రవాహంలో క్లయింట్ మూల పోర్ట్ మరియు సర్వర్ వినేవాడు
ఒక సొరంగంలో రెండు పోర్ట్ సంఖ్యలను పోల్చండి: సర్వర్ స్థిర వినేవాడు మరియు క్లయింట్ తాత్కాలిక మూలం, మరియు వాటి మధ్య రౌటర్ అనువాదం ఎలా ఉంటుంది.
ఒకే సంభాషణలో రెండు సంఖ్యలు కనిపిస్తాయి, రెండూ తప్పు కావు. సేవను అందించే వినేవాడిని సర్వర్ లాగ్ చూపిస్తుంది, డేటాగ్రామ్ పంపిన సాకెట్ను ల్యాప్టాప్ చూపిస్తుంది, మధ్యలో ఉన్న రౌటర్ బయటకు వెళ్ళేటప్పుడు రెండవదాన్ని మళ్ళీ రాయగలదు. సంఖ్యలను పోల్చడం కంటే సంభాషణ రెండు చివరలను పోల్చడం ఉపయోగకరం. క్రింది పోలిక వినేవాడు, క్లయింట్ సాకెట్ మరియు అనువదించిన మూలాన్ని వేరుగా ఉంచుతుంది, ఎందుకంటే అవి వేర్వేరు ప్రశ్నలకు సమాధానం ఇస్తాయి.
వ్యతిరేక చివరలను వివరించే రెండు సంఖ్యలు
సర్వర్ కాన్ఫిగర్ చేసిన పోర్ట్ క్లయింట్ డయల్ చేసే గమ్యం. దాన్ని విధానం నిర్ణయిస్తుంది, ప్రొఫైల్లో కనిపిస్తుంది, సర్వర్ వైపు తెరిచి ఉండాలి. క్లయింట్ మూల పోర్ట్ స్థానికంగా, సాధారణంగా తాత్కాలిక శ్రేణి నుండి ఎంచుకోబడుతుంది, సమాధానం దిగడానికి స్థలం ఉండాలని ఉంటుంది. ప్రతి పునఃకనెక్షన్లో మారవచ్చు, రూపకల్పనలో ఏదీ దాని స్థిరత్వంపై ఆధారపడదు.
మధ్యలో ఉన్న రౌటర్ ఆ మూలాన్ని తన సొంత 'NAT' మ్యాపింగ్లో మళ్ళీ రాయగలదు. అందుకే సర్వర్లో కనిపించే సంఖ్యకు ల్యాప్టాప్ ఎంచుకున్న సంఖ్యతో తరచుగా సంబంధం ఉండదు.
బయటకు వెళ్ళేటప్పుడు మూల సంఖ్య ఎక్కడ మారుతుంది
ఒక కల్పిత IPv4 ఉదాహరణ తీసుకోండి: అనువాదం చేసే రౌటర్ వెనుక క్లయింట్, ఒక 'UDP' వినేవాడు ఉన్న సర్వర్, రెండింటినీ దాటే ఒకే డేటాగ్రామ్. మూడు పరిశీలనా బిందువుల వద్ద ప్యాకెట్ను మళ్ళీ నడపడం బదులు పట్టిక ప్రతి చివరను, దానికి ఏం జరుగుతుందో పేరు పెడుతుంది.
| Endpoint | What stays fixed | What changes on reconnect | Who owns it |
|---|---|---|---|
| Server listener | The service port and the address the profile names | Nothing; the listener does not follow the client | The server operator |
| Client socket | The destination it dials | The local source port, chosen per socket | The client, or its operating system |
| Translated source | Usually the public address of the router | The port, and sometimes the address after a network switch | The NAT device or the upstream carrier |
గమ్యం ప్రతి వరుసలో స్థిరంగా ఉంటుంది, మారేది మూలం గుర్తింపు మాత్రమే. UDP NAT అవసరాలు లోపలి చిరునామా మరియు పోర్ట్ను బయటి మ్యాపింగ్ నుండి వేరు చేస్తాయి, అదే రెండవ మరియు మూడవ వరుసల మధ్య తేడా. రౌటర్ క్లయింట్ మూల పోర్ట్ను ఉంచుకోవచ్చు లేదా మరొకటి ఎంచుకోవచ్చు; ఉంచుకోవడం అనేది అప్లికేషన్ ఊహించవలసిన విషయం కాదు.
మూడు చివరలను హోస్ట్ల నుండే చదవండి
క్రింది జాబితాలు మూడు వేర్వేరు యంత్రాల నుండి వచ్చి కలిసి మొత్తం సంభాషణను చూపిస్తాయి. మొదటిది సర్వర్లో, రెండవది క్లయింట్లో, మూడవది మ్యాపింగ్ ఉన్న చోట నడపండి. ఒక లాగ్ లైన్ ఎప్పుడూ మూడింటినీ చూపదు.
ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194
మొదటి జాబితా సర్వర్ సేవా పోర్ట్కు బద్ధమై ఉందని నిరూపించి, ఏ ప్రక్రియ దాన్ని కలిగి ఉందో చూపిస్తుంది. రెండవది క్లయింట్ స్థానిక సాకెట్ మరియు అది డయల్ చేసిన గమ్యాన్ని చూపిస్తుంది. మూడవది రౌటర్ సృష్టించిన మ్యాపింగ్ను చూపిస్తుంది, అనువదించిన మూలం కనిపించే ఏకైక స్థలం అదే. ఆ క్రమంలో చదవండి, రెండు సంఖ్యలు విరుద్ధంగా కనిపించడం ఆగుతుంది.
పునఃకనెక్షన్ ఏమి మారుస్తుంది, ఏమి మార్చదు
కొన్ని రౌటర్లు క్లయింట్ మూల పోర్ట్ను ఖాళీగా ఉన్నప్పుడు ఉంచుకుంటాయి, మరికొన్ని ప్రతిసారీ వేరొకటి కేటాయిస్తాయి. రెండు ప్రవర్తనలూ సాధారణం, మొదటిది కోరే అప్లికేషన్ రెండవదానిలో విరిగిపోతుంది. పునఃకనెక్షన్ లేదా నెట్వర్క్ మార్పు తర్వాత మ్యాపింగ్ మారడం సర్వర్ లోపం కాదు: క్లయింట్ కొత్త సాకెట్ తెరుస్తుంది, రౌటర్ తన వద్ద ఉన్నది ఇస్తుంది, సర్వర్ అదే వినేవాడిలో కొత్త మూలాన్ని చూస్తుంది. ఏదైనా క్లయింట్ పోర్ట్కు పంపిన ట్రాఫిక్ను సర్వర్ అంగీకరిస్తుందని ఆశించడమే లోపం.
సమాజంలోని OpenVPN క్లయింట్లు ఈ ప్రవర్తనను nobind ద్వారా పొందుతాయి, ఇది ఆపరేటింగ్ సిస్టమ్కు స్థానిక పోర్ట్ను ఎంచుకోనిస్తుంది; దూర పోర్ట్ ఇప్పటికీ ప్రొఫైల్ నుండే వస్తుంది. స్పష్టంగా బైండ్ చేయడం సచేతన నిర్ణయం, ప్రోటోకాల్ అవసరం కాదు. సర్వర్ ఒక చివరను అందిస్తూనే ఉంటుంది, క్లయింట్లు తమ స్థానిక గుర్తింపులను ఎంచుకుంటాయి.
రికార్డులో పొరలను విడివిడిగా లేబుల్ చేయండి
సొరంగం లోపల సొంత పోర్ట్లతో రెండవ సంభాషణ ఉంటుంది. సొరంగం మోసే HTTPS అభ్యర్థన గమ్యం TCP 443, బయటి ఎన్క్రిప్టెడ్ కనెక్షన్ UDP 1194 ఉపయోగిస్తుంది, కాబట్టి బయటి మూల పోర్ట్ మార్చడం లోపలి సేవలో ఏమీ మార్చదు.
బయటి పొరలో కూడా ప్రోటోకాల్ ముఖ్యం. UDP 1194 మరియు TCP 1194 వేర్వేరు చివరలు, సంఖ్య సరిపోలిందని మాత్రమే 'TCP' వినేవాడు ఎప్పుడూ UDP డేటాగ్రామ్ను పొందదు. ఒక డిప్లాయ్మెంట్ను డాక్యుమెంట్ చేసేటప్పుడు సర్వర్ వినేవాడు, క్లయింట్ సాకెట్ మరియు అనువదించిన మూలాన్ని మూడు వేర్వేరు విషయాలుగా లేబుల్ చేయండి, ప్రతి దానికి రవాణాను జోడించండి.
తర్వాత విధానం పాత్రలను అనుసరించనివ్వండి. సర్వర్ ఉద్దేశించిన రవాణాను తన వినేవాడిలో తెరుస్తుంది, ఇప్పటికీ భాగస్వామిని ధృవీకరిస్తుంది; క్లయింట్ ఫైర్వాల్ లోపలికి వచ్చే సేవను ప్రచురించకుండా తన సొంత బయటకు వెళ్ళే మార్పిడికి సమాధానాలను అనుమతిస్తుంది. స్థితిలేని ఫిల్టర్కు తిరిగి వెళ్ళే దిశ స్పష్టంగా రాయబడాలి, చక్కని చిత్రాలకు ఆవల ఈ భేదం ముఖ్యమైనదానికి ఆచరణాత్మక కారణం అదే.