கேட்வேயின் சொந்த சுரங்கப்பாதை முகவரிகளில் ஒன்றில் 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 இல் ஒரு மூலத்தைப் பார்க்கிறது. அதன் பதில் அதன் இயல்புநிலை கேட்வேக்குச் செல்கிறது, அது VPN கேட்வே அல்ல, LAN ரவுட்டர், ஏதாவது வேறு விதமாகச் சொல்லாத வரை. இரண்டு ஏற்பாடுகள் இதைச் சரிசெய்கின்றன, அவை சமமானவை அல்ல. சாதனத்தில் அல்லது 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 க்கு கடந்ததா மற்றும் சுரங்கப்பாதை நோக்கி பதில் திரும்பியதா என்பதைக் காட்டுகின்றன. விதிகளை மாற்றிய பிறகு புதிய இணைப்பைப் பயன்படுத்துங்கள், ஏனெனில் இருக்கும் நிலை அதன் முந்தைய மேப்பிங்கைத் தக்கவைத்து பழைய முறையில் தோல்வியடையும். பின்னர் முழு உரையாடலையும் உறுதிப்படுத்துங்கள்: சாதனத்தின் முகவரி, ஃபார்வர்டிங் அனுமதி மற்றும் பதிலின் வழி அனைத்தும் ஒரே ஓட்டத்தை விவரிக்கின்றன.

தொடர்புடைய கட்டுரைகள்