VPN గేట్వే యొక్క స్వంత చిరునామాలో LAN సేవను ప్రచురించండి
క్లయింట్ నుండి పరికరం వరకు మరియు తిరిగి ఫార్వర్డ్ చేయబడిన పోర్టును అనుసరించండి: గమ్యం అనువాదం పరిధిని నిర్ణయించండి, ఆపై ప్రతిస్పందనలు రూట్ అవుతాయా లేదా అనువదించబడతాయా అని నిర్ణయించండి.
గేట్వే యొక్క స్వంత టన్నెల్ చిరునామాలలో ఒకదానిలో LAN పరికరాన్ని ప్రదర్శించడానికి NAT యొక్క ఒక లైన్ సరిపోతుంది. అయినప్పటికీ కనెక్షన్ విఫలమవుతుంది, ఎందుకంటే ప్రతిస్పందించే పరికరానికి క్లయింట్ చిరునామా ఆ గేట్వే ద్వారా చేరుకోగలదని తెలియదు. ప్యాకెట్ను క్లయింట్ నుండి లోపలికి అనుసరించండి, ఆపై ప్రతిస్పందనను తిరిగి బయటకు అనుసరించండి, తప్పిపోయిన సగం స్పష్టమవుతుంది.
క్లయింట్ దృష్టికోణం నుండి ప్రారంభించండి
ఈ ఉదాహరణలోని క్లయింట్ VPN పూల్ 10.62.0.0/24 లో ఉంది మరియు పోర్ట్ 8080 పై 10.62.0.1 కు కనెక్ట్ అవుతుంది. ఆ చిరునామా గేట్వేదే, కాబట్టి ప్యాకెట్ మరొక పీర్ వద్దకు కాకుండా గేట్వే కెర్నల్కు చేరుతుంది. గేట్వే వెనుక LAN 172.21.4.0/24. గేట్వే దగ్గర 172.21.4.10 ఉంది మరియు నిజంగా HTTP సేవ చేసే పరికరం 172.21.4.40.
మరొక VPN పీర్కు చెందిన చిరునామా గేట్వే యొక్క సేవా చిరునామాతో మార్చుకోలేము. క్లయింట్ ఒక పీర్ చిరునామాకు కనెక్ట్ అవుతుంటే, ఏ గేట్వే నియమం కూడా అసలు ప్రమేయం లేదు, మరియు ఈ మొత్తం ప్రయాణం తప్పు సందర్భం.
గమ్యం అనువాదం పరిధిని ఉద్దేశపూర్వకంగా పరిమితం చేయండి
సన్నని సంస్కరణం ఒక పోర్టును ప్రదర్శించి గమ్యాన్ని మాత్రమే తిరిగి రాస్తుంది. ప్యాకెట్ దాని ప్రోటోకాల్ మరియు మూలాన్ని నిలుపుకుంటుంది, అదే మిగిలిన ప్రయాణాన్ని ఆసక్తికరంగా చేస్తుంది.
iptables -t nat -A PREROUTING -i tun0 -s 10.62.0.0/24 -d 10.62.0.1 -p tcp --dport 8080 -j DNAT --to-destination 172.21.4.40:80
ప్రోటోకాల్ మరియు పోర్ట్ ప్రమాణాలు లేని నియమం విశాల సంస్కరణం: క్లయింట్ ఎంచుకున్న ఏ పోర్టునైనా నిలుపుకుని చిరునామాన్ని మాత్రమే మారుస్తుంది. మొత్తం హోస్ట్ను ప్రదర్శించాలనుకున్నప్పుడు ఇది సమంజసం, ఒకే సేవ ఉద్దేశమైతే తప్పు. నియమాన్ని మళ్లీ చదివి ఇంటర్ఫేస్ పేరును నిర్ధారించండి. తప్పు ఇంటర్ఫేస్పై DNAT నియమం దేనితోనూ సరిపోలదు, ఇది నియమం లేని సందర్భంలో వలె అదే సమయ పరిమితిని కలిగిస్తుంది మరియు పరికరాన్ని చూస్తూ ఒక గంటను వృథా చేస్తుంది.
ఫార్వర్డింగ్ సరిహద్దు అంగీకరించనివ్వండి
అనువాదం హెడర్ను మారుస్తుంది, అనుమతి ఇవ్వదు. డిఫాల్ట్ డ్రాప్ విధానంతో ఫార్వర్డ్ చేయబడిన ప్రవాహానికి దాని స్వంత అనుమతి కావాలి, తిరిగి వచ్చే దిశకు మీ విధానంలో బహుశా ఇప్పటికే ఉన్న స్థాపిత కనెక్షన్ నియమం కావాలి.
iptables -A FORWARD -i tun0 -o lan0 -d 172.21.4.40 -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ప్రతి DNAT ప్రవాహానికి షరతులేని అనుమతి ఈ రూపకల్పన కంటే విశాలమైనది మరియు తర్వాత మరొకరు జోడించే మ్యాపింగ్లను కూడా అనుమతిస్తుంది. గమ్యాన్ని మరియు పోర్టును పేర్కొనండి, మిగిలినది మూసి ఉంచండి. ఫార్వర్డ్ నియమం కౌంటర్లు సున్నాలో ఉండగా NAT కౌంటర్లు పెరిగితే, ప్యాకెట్ మీ నియమానికి ముందే విసిరివేయబడుతోంది. రెండవ కాపీని జోడించడం బదులు చైన్ క్రమాన్ని చదవండి.
పరికరం ఏదో ఒక విధంగా సమాధానం ఇవ్వాలి
అనువాదం తర్వాత పరికరం 10.62.0.0/24 లోపల మూలాన్ని చూస్తుంది. దాని ప్రతిస్పందన దాని డిఫాల్ట్ గేట్వేకు వెళ్తుంది, అది LAN రౌటర్, VPN గేట్వే కాదు, ఏదైనా వేరే చెప్పకపోతే. రెండు ఏర్పాట్లు దీన్ని సరిచేస్తాయి మరియు అవి సమానం కావు. పరికరంలో లేదా LAN రౌటర్లోని మార్గం 10.62.0.0/24 ను 172.21.4.10 కు పంపి క్లయింట్ మూలాన్ని కాపాడుతుంది. పరిమిత మూల అనువాదం బదులుగా క్లయింట్ను గేట్వే యొక్క LAN చిరునామా వెనుక దాచుతుంది.
ip route add 10.62.0.0/24 via 172.21.4.10 dev eth1
iptables -t nat -A POSTROUTING -s 10.62.0.0/24 -d 172.21.4.40 -o lan0 -p tcp --dport 80 -j SNAT --to-source 172.21.4.10
సేవకు ఏమి కావాలో దాని ఆధారంగా ఎంచుకోండి. ప్రతి క్లయింట్ విధానం మరియు అర్థవంతమైన లాగ్లు రూట్ చేయబడిన రూపాన్ని కోరుతాయి; మార్గం ఇవ్వలేని పరికరం, లేదా తప్పనిసరిగా LAN చిరునామా చూడాల్సిన సేవ, అనువదించబడిన రూపాన్ని సూచిస్తాయి. ఒక ప్రతిస్పందన పని చేయడానికి ప్రపంచ masquerade నియమాన్ని ఆశ్రయించవద్దు. అది ప్రతి క్లయింట్ను ప్రతి గమ్యం నుండి దాచి, మూల చిరునామాలపై ఆధారపడిన విధానాలను నిశ్శబ్దంగా విరుగగొడుతుంది.
గేట్వే నుండే పరీక్షించవద్దు
గేట్వేలో 10.62.0.1 వైపు సృష్టించిన అభ్యర్థన లోపలికి వచ్చే PREROUTING ద్వారా కాకుండా OUTPUT చైన్ ద్వారా బయటకు వెళ్తుంది. దాని వైఫల్యం లేదా విజయం క్లయింట్ వైపు చూసే నియమం గురించి ఏమీ చెప్పదు, అలాగే ప్రజలు పనిచేస్తున్న నియమం పాడైందని నిర్ణయించుకుంటారు.
conntrack -L | grep 172.21.4.40
tcpdump -ni any 'port 8080 or port 80'
నిజమైన క్లయింట్ అభ్యర్థనను అమలు చేసి రెండింటినీ చదవండి. conntrack ఎంట్రీ వర్తించిన అనువాదాన్ని చూపిస్తుంది, క్యాప్చర్లు అభ్యర్థన LAN కు దాటిందా మరియు టన్నెల్ వైపు ప్రతిస్పందన తిరిగి వచ్చిందా చూపిస్తాయి. నియమాలను మార్చిన తర్వాత కొత్త కనెక్షన్ ఉపయోగించండి, ఎందుకంటే ఉన్న స్థితి తన మునుపటి మ్యాపింగ్ను నిలుపుకుంటుంది మరియు పాత పద్ధతిలోనే విఫలమవుతూనే ఉంటుంది. ఆపై మొత్తం సంభాషణను నిర్ధారించండి: పరికరం చిరునామా, ఫార్వర్డింగ్ అనుమతి మరియు ప్రతిస్పందన మార్గం అన్నీ ఒకే ప్రవాహాన్ని వివరిస్తాయి.