eth0:0 ஒரு லேபிள், சாதனம் அல்ல: SNAT பொருத்தத்தைச் சரிசெய்க
பூஜ்ஜிய கவுண்டர் என்பது இருக்க முடியாத இடைமுகத்தை விதி பெயரிடுகிறது என்பதாகும். உண்மையான சாதனத்தைப் படித்து, -o பொருத்தத்தைச் சரிசெய்து, பின்னர் மொழிபெயர்க்கப்பட்ட முகவரியை வேண்டுமென்றே தேர்ந்தெடுக்கவும்.
ஒரு VPN கிளையண்ட் குழுவுக்கு அதன் சொந்த பொது முகவரியை வழங்க வேண்டிய NAT விதி பூஜ்ஜிய பாக்கெட்டுகளில் நிற்கிறது, அதே குழு தவறான மூலத்துடன் வெளியேறுகிறது. விதி பொதுவாக முகவரியில் தவறுவதில்லை; இடைமுகத்தில் தவறுகிறது. -o eth0:0 இல்லாத சாதனத்தைக் குறிக்கிறது, ஏனெனில் eth0:0 முகவரியுடன் இணைக்கப்பட்ட லேபிள், அந்த முகவரியின் சாதனம் eth0 ஆகும். கவுண்டர்களைப் பார்ப்பது இதை உறுதிசெய்யும் வேகமான வழி, திருத்தம் விசாரணை காட்டுவதை விடச் சிறியது.
கர்னல் சாதனத்தை எப்படி அழைக்கிறது எனப் பார்க்கவும்
எதையும் மாற்றும் முன் இரு பார்வைகளையும் தனித்தனியாகப் படிக்கவும்:
ip link show
ip address show dev eth0
ip route get 203.0.113.20
இணைப்புப் பட்டியல் இடைமுகங்களைக் காட்டுகிறது. முகவரிப் பட்டியல் லேபிளைக் கொண்ட இரண்டாவது IPv4 முகவரியைக் காட்டலாம் eth0:0, அந்த முகவரியின் சாதனம் இன்னும் eth0 ஆகும். iproute2 இன் முகவரி கையேடு லேபிளை முகவரியின் பெயராகக் கருதுகிறது, இரண்டாவது இணைப்பாக அல்ல, முழுப் பிரச்சினையும் இந்த வேறுபாட்டின் மேல்தான் நிற்கிறது.
வரலாறு குழப்பத்தை விளக்குகிறது. பழைய ifconfig eth0:0 தொடரியல் உண்மையிலேயே புதிய இடைமுகம் போலத் தோன்றியது, அந்தக் கால ஸ்கிரிப்டுகள் இன்னும் ஒன்றைக் குறிப்பிடுகின்றன. இன்றைய அமைப்பில் அலியாஸ் என்பது முகவரியின் மேல் உள்ள லேபிள், ரூட்டிங் அல்லது netfilter பாதையில் எதுவும் அதைத் தனி வெளியேற்றப் புள்ளியாகக் கருதவில்லை.
விதி உண்மையில் எதனுடன் பொருந்தியது எனப் பார்க்கவும்
கவுண்டர்களை நினைவில் இருந்து அல்ல, விதிப் பட்டியலுடன் படிக்கவும்:
iptables -t nat -L POSTROUTING -v -n --line-numbers
பொருந்தும் போக்குவரத்து பாயும்போது பாக்கெட் கவுண்டர் பூஜ்ஜியத்திலேயே இருக்கும் விதி மதிப்பிடப்படுவதில்லை, மேலும் பின்வருவதைப் பெயரிடும் வெளியேற்ற இடைமுக நிபந்தனை eth0:0 பொதுவான காரணம். ரூட் தேர்ந்தெடுத்த வெளியேற்றச் சாதனம் eth0, எனவே வேறு பெயரைத் தேடும் நிபந்தனை கர்னல் எந்த மூல முகவரியைத் தேர்ந்தெடுத்தாலும் ஒருபோதும் உண்மையாகாது.
நிபந்தனையை உண்மையான சாதனத்துக்கு மாற்றி லேபிளை அதற்கு வெளியே விடவும். அந்தச் சாதனத்தைப் பகிரும் இரு கிளையண்ட் குழுக்களை வேறுபடுத்த வேண்டும் என்றால், மூல முன்னொட்டால் வேறுபடுத்துங்கள், இருக்க முடியாத இடைமுகப் பெயரால் அல்ல. ஒன்றுடன் ஒன்று மேலிடாத -s பொருத்தங்களைக் கொண்ட இரு விதிகள் படிக்கவும் சோதிக்கவும் முடியும்; கற்பனைச் சாதனம் கொண்ட ஒரு விதி இரண்டும் அல்ல. ஒவ்வொரு விதிக்கும் குழுவைப் பெயரிடும் கருத்தைச் சேர்க்கவும், ஏனெனில் ஆறு மாதங்களுக்குப் பிறகு முன்னொட்டு மட்டும் அது ஏன் அங்கு உள்ளது என்று யாருக்கும் சொல்லாது.
சாதனத்தைத் தேர்ந்தெடுத்த ரூட்டைப் பார்க்கவும்
Postrouting NAT ரூட் ஏற்கனவே வெளியேற்ற இடைமுகத்தைத் தேர்ந்தெடுத்த பிறகு இயங்குகிறது, எனவே விதியில் உள்ள இடைமுகம் ரூட் தேர்ந்தெடுத்ததாகவே இருக்க வேண்டும். கர்னலை நேரடியாகக் கேளுங்கள் ip route get உடன் பிரதிநிதி கிளையண்ட் முகவரிக்காக, அது தெரிவிக்கும் சாதனத்தையும் மூலத்தையும் இரண்டையும் படிக்கவும்.
பதில் eth0 எனப் பெயரிட்டால், விதியின் இடைமுகப் பகுதி தீர்ந்தது. அது சுரங்கச் சாதனத்தைப் பெயரிட்டால், நீங்கள் திருத்தும் விதியைப் பாக்கெட் ஒருபோதும் அடையாது, தேடல் ரூட்டிங் அட்டவணைக்கும் அதன் முன்னுரிமைகளுக்கும் நகர்கிறது. பாக்கெட் வேறெங்கோ வெளியேறியதால் ஒருபோதும் பொருந்தாத விதி, தவறாக எழுதப்பட்ட சாதனம் கொண்ட விதிபோலவே கவுண்டர் வெளியீட்டில் தெரிகிறது. எதையும் திருத்தும் முன் இரு நிலைகளில் எது உங்களுக்கு என்று உறுதிசெய்யுங்கள், ஏனெனில் இரண்டாவதற்கு உரை அல்ல, ரூட்டிங் மாற்றம் தேவை.
மொழிபெயர்க்கப்பட்ட மூலத்தை வேண்டுமென்றே தேர்ந்தெடுக்கவும்
சாதனம் சரியானதும், மூல முகவரி தனி முடிவு. இது விளக்க IPv4 குழு மற்றும் மாதிரி முகவரி மட்டுமே:
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
-j SNAT --to-source 203.0.113.20
முகவரியை --to-source இல் எழுதுவது யாரும் அதை உங்களை நோக்கித் திருப்பி ரூட் செய்ய வைக்காது. மேல்நிலை வழங்குநர் அல்லது முகவரி உரிமையாளர் அந்த முகவரிக்கான பதில்களை இந்த ஹோஸ்டுக்கு வழங்க வேண்டும், முகவரி நீங்கள் பயன்படுத்த அதிகாரம் உள்ளதாக இருக்க வேண்டும். இல்லையெனில், விதி பொருந்தி மொழிபெயர்க்கும், பதில்கள் இருந்தாலும் வேறெங்கோ போகும்.
மூல முகவரியை மாற்றுவது மேல்நிலை இணைப்பை மாற்றுவதற்குச் சமமல்ல. உண்மையான தேவை வேறு இயற்பியல் பாதையாக இருந்தால், ரூட்டிங் கொள்கை முதலில் அந்தப் பாதையைத் தேர்ந்தெடுக்க வேண்டும்; பின்னர் SNAT கொள்கை தேர்ந்தெடுத்த சாதனத்தில் மூலத்தை மீண்டும் எழுதுகிறது. கூடுதல் லேபிள்கள் eth0 சேர்ப்பது பாதையையோ அனுமதியையோ தராது.
இப்போது திறந்த இணைப்பால் சரிபார்க்கவும்
உள்ள இணைப்பை மீண்டும் பயன்படுத்தாமல் புதிய கிளையண்ட் இணைப்பைத் திறக்கவும். இணைப்புக் கண்காணிப்பு ஓட்டம் தொடங்கியபோது பதிவுசெய்த மொழிபெயர்ப்பை வைத்திருக்கும், எனவே பழைய அமர்வு முந்தைய மூல முகவரியைத் தொடர்ந்து பயன்படுத்தி சரியான புதிய விதியை உடைந்ததாகக் காட்டலாம். கவுண்டர் உயர்வதைப் பாருங்கள், பின்னர் மொழிபெயர்க்கப்பட்ட மூலத்தைக் கம்பியில் அல்லது தொலை முனையில் கவனிக்கவும்.
ஒரு இடைமுகத்தைப் பகிரும் பல குழுக்களுக்கு, ஒவ்வொன்றுக்கும் தெளிவான மூலப் பொருத்தம் மற்றும் அதன் சொந்த மொழிபெயர்ப்பு முகவரியைக் கொடுத்து, ஃபயர்வால் நிர்வகிக்கப்படும் உள்ளமைவில் வைத்து, மதிப்பிடப்படும் வரிசையைக் குறிக்கவும். பிறகு நீங்கள் சரிபார்த்ததைப் பதிவுசெய்யவும்: ip route get இலிருந்து சாதனம், நகர்ந்த கவுண்டர், தொலைப் பக்கம் கண்ட மூலம். அந்தப் பதிவு லேபிள் குழப்பத்தை மீண்டும் செய்யாமல் அடுத்த அறிக்கைக்குப் பதிலளிக்கிறது.