WireGuard DNS DNAT: பதில் பாதையை வேலை செய்ய வைத்திருங்கள்
DNAT இலக்கை மீண்டும் எழுதுகிறது, மூலத்தை அல்ல. விதியைச் சேர்ப்பதற்கு முன் மேல்நிலை ரிசால்வர் எவ்வாறு பதிலளிக்க முடியும் என்பதை முடிவு செய்து, ஒவ்வொரு பொருத்தத்தையும் குறுகலாக வைத்திருங்கள்.
WireGuard கிளையண்டின் DNS வினவலை வேறு ரிசால்வருக்குத் திருப்புவது ஒரு விதியாகத் தோன்றும், ஆனால் மூன்று முடிவுகளாக நடந்துகொள்கிறது. இலக்கை மீண்டும் எழுத வேண்டும், பாக்கெட்டை அனுப்ப வேண்டும், மேலும் பதில் கேட்வே உருவாக்கிய மொழிபெயர்ப்பு நிலையின் வழியாகத் திரும்பும் வழியைக் கண்டறிய வேண்டும். மூன்றாவதைத் தவிர்த்தால் வினவல் சுத்தமாக வெளியேறும், ஆனால் கிளையண்ட் என்றென்றும் காத்திருக்கும்.
10.77.0.0/24 இல் உள்ள அங்கீகரிக்கப்பட்ட கிளையண்ட்கள் wg0 வழியாக வந்து, அறிவிக்கப்பட்ட முகவரி 10.77.0.1 ஐக் கேட்டு, 203.0.113.53 இல் ரிசால்வர் தேவைப்படும் உதாரணத்தை எடுத்துக்கொள்ளுங்கள். மேல்நிலை முகவரி ஆவணப்படுத்தலுக்கான இடம்காட்டி, இயங்கும் சேவை அல்ல.
வினவலைத் திருப்பிவிடுவது அதன் இலக்கை மட்டுமே மாற்றுகிறது
PREROUTING இல் உள்ள இலக்கு-NAT விதி வழிமாற்ற முடிவு எடுக்கப்படுவதற்கு முன் முகவரியை மீண்டும் எழுதுகிறது, எனவே பாக்கெட் பின்னர் பழைய இலக்குக்குப் பதிலாக புதிய இலக்கை நோக்கி வழிமாற்றப்படுகிறது. கிளையண்டின் மூல முகவரி அந்தச் செயலால் தொடப்படவில்லை. அதனால்தான் முழுமையாகத் தோன்றும் விதியும் அமைதியை உருவாக்க முடியும்: கோரிக்கை இப்போது கிளையண்டின் தனிப்பட்ட வரம்பைப் பற்றி ஒருபோதும் கேளாத ரிசால்வரை நோக்கிச் செல்கிறது. கேட்வே ஒரு புலத்தை மொழிபெயர்த்து இரண்டாவது சிக்கலை மரபாகப் பெற்றது.
இரண்டு DNS போக்குவரத்துகளுக்கும் பொருந்தும் விதிகள் தேவை, ஏனெனில் பதில் துண்டிக்கப்படும்போது கிளையண்ட் TCP க்குத் திரும்புகிறது.
கீழே உள்ள விதிகள் ஒரு உள்வரும் இடைமுகம், ஒரு கிளையண்ட் வரம்பு மற்றும் ஒரு அசல் இலக்கு முகவரியைத் தேர்ந்தெடுக்கின்றன. கேட்வேயில் வேறு எதுவும் பாதிக்கப்படாது, கேட்வேயின் சொந்த வினவல் எதிலும் பொருந்தாது.
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i wg0 -s 10.77.0.0/24 -d 10.77.0.1 -p udp --dport 53 -j DNAT --to-destination 203.0.113.53:53
iptables -t nat -A PREROUTING -i wg0 -s 10.77.0.0/24 -d 10.77.0.1 -p tcp --dport 53 -j DNAT --to-destination 203.0.113.53:53
பதில் பாதை ஒரு தனி முடிவு
இரண்டு ஏற்பாடுகள் பதில் திரும்ப அனுமதிக்கின்றன, ஒன்றை முன்கூட்டியே தேர்ந்தெடுப்பது ஒரு பிழைத்திருத்த அமர்வைச் சேமிக்கிறது. ஒன்று, மேல்நிலை ரிசால்வருக்கு இந்தக் கேட்வே வழியாக 10.77.0.0/24 க்குத் திரும்பும் வழி உள்ளது, அல்லது கேட்வே வெளியேறும்போது மூலத்தை மொழிபெயர்க்கிறது, அதனால் பதில் மேல்நிலை ஏற்கனவே அறிந்த முகவரிக்கு வந்துசேரும். இரண்டும் வேலை செய்கின்றன; மேல்நிலை மீதான உங்கள் கட்டுப்பாட்டுடன் ஒன்று மட்டுமே பொருந்துகிறது.
வழிமாற்றம் முதல் முயற்சிக்குத் தகுதியானது, ஏனெனில் அது கிளையண்டின் முகவரியை ரிசால்வருக்குத் தெரியும்படி வைத்து இரண்டாவது மொழிபெயர்ப்பு அடுக்கைத் தவிர்க்கிறது. மேல்நிலை உங்கள் கட்டுப்பாட்டுக்கு வெளியே இருந்தால், குறிப்பிட்ட வெளியேற்ற இடைமுகத்தில் மூல மொழிபெயர்ப்பே நடைமுறைத் தேர்வு.
அந்த மொழிபெயர்ப்பைத் திருப்பிவிடுதலுக்கு இணையாக இறுக்கமாக வரம்பிடுங்கள், இல்லையெனில் விதி அதற்குத் தற்செயலாகப் பொருந்தும் எதற்கும் பொதுநோக்கு NAT ஆகிவிடும்:
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -d 203.0.113.53 -o eth0 -p udp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -d 203.0.113.53 -o eth0 -p tcp --dport 53 -j MASQUERADE
இணைப்புக் கண்காணிப்பு மேப்பிங்கை இணையாக வைத்திருக்கிறது, எனவே திரும்பும் வழியில் பதில் கிளையண்டின் அசல் டூப்பிளுக்கு மீண்டும் எழுதப்படுகிறது. வெளியேற்ற விதி இல்லாவிட்டால், ரிசால்வர் தன் பதிலை எட்ட முடியாத தனிப்பட்ட முகவரிக்கு அனுப்புகிறது, கிளையண்ட் பிழைக்குப் பதிலாக நேர முடிவைக் காண்கிறது.
வேலை தோன்றுவதை விடக் குறுகலாக விதிகளை எழுதுங்கள்
அனுப்புதல் அனுமதி அதே எல்லைக்கு உரியது. இயந்திரத்தில் ஒவ்வொரு DNAT இணைப்பையும் ஏற்பதற்குப் பதிலாக கிளையண்டிலிருந்து ரிசால்வருக்கான ஓட்டத்தையும் conntrack ஏற்கனவே அடையாளம் காணும் திரும்பும் போக்குவரத்தையும் அனுமதியுங்கள். முழுமையான அனுமதி DNS உடன் எந்தத் தொடர்பும் இல்லாத துறைமுக அனுப்புதல்களுக்கும் அதிகாரம் அளிக்கிறது.
கேட்வேயின் சொந்த ரிசால்வர் வேறு குறியீட்டுப் பாதை. உள்ளூரில் வழங்கப்படும் வினவல் OUTPUT வழியாகச் செல்கிறது, எனவே கேட்வே ஷெல்லிலிருந்து சோதிப்பது PREROUTING விதியையோ அனுப்புதல் கொள்கையையோ பயிற்சி செய்யாது. அதனால்தான் உள்ளூர் சோதனை வெற்றிபெறும்போது ஒவ்வொரு கிளையண்டும் தோல்வியடைகிறது, எதிர்மறையும் அவ்வளவு பொதுவானது.
இங்கு எதுவும் துறைமுகம் 443 இல் HTTPS மீதான DNS ஐயோ துறைமுகம் 853 இல் TLS மீதான DNS ஐயோ உள்ளடக்கவில்லை, IPv6 ஐயும் உள்ளடக்கவில்லை. IPv6 ரிசால்வர் அமைக்கப்பட்ட கிளையண்ட் முழு ஏற்பாட்டையும் மகிழ்ச்சியுடன் புறக்கணிக்கும்.
புதிய வினவல் எதை நிரூபிக்கிறது
இணைப்புக் கண்காணிப்பு முந்தைய மேப்பிங்களை நினைவில் வைத்திருக்கிறது, எனவே விதி மாற்றத்திற்கு முன் அனுப்பப்பட்ட வினவலுக்குப் பழைய நிலையிலிருந்து பதில் கிடைக்கலாம், புதிய விதி உடைந்ததாகத் தோன்றலாம். புதிய மூல துறைமுகத்துடன் தொடங்குங்கள், கிளையண்ட் பதில்களைத் தற்காலிகச் சேமிப்பில் வைக்கும் இடத்தில் புதிய பெயரில் தொடங்குங்கள்.
dig @10.77.0.1 example.com A +short
conntrack -L -p udp --dport 53 | head
முதல் கட்டளை கிளையண்ட் பாதை எதிலும் தீர்க்கப்படுகிறதா என்பதைக் காட்டுகிறது, இரண்டாவது கேட்வே உண்மையில் நிறுவிய மொழிபெயர்ப்பை டூப்பிளின் இரு திசைகளுடன் காட்டுகிறது. சரியான ரிசால்வரை நோக்கிக் காட்டும் ஆனால் பதில் கவுண்டர் பூஜ்ஜியத்தில் சிக்கிய மேப்பிங் வடிகட்டி சிக்கல் அல்ல, திரும்பும் பாதைச் சிக்கல்.
எதையும் திருப்பிவிடுவதற்கு முன் நீங்கள் எதிர்பார்க்கும் பெயர்களை ரிசால்வர் அறிந்திருப்பதை உறுதிப்படுத்துங்கள். பொது பெயர்களுக்குப் பதிலளிக்கும் ஆனால் உங்கள் தனிப்பட்ட மண்டலத்திற்குப் பதிலளிக்காத மாற்று வேலை செய்யும் தேடலை உடைந்த சுரங்கப்பாதை போலத் தோன்றும் NXDOMAIN ஆக மாற்றுகிறது. கிளையண்ட் பாதை ஈடுபடுவதற்கு முன் கேட்வேயிலிருந்து நேரடியாக ரிசால்வரைச் சோதியுங்கள். மேலும் iptables நீட்சிகளின் குறிப்பு இந்த விதிகள் சார்ந்திருக்கும் DNAT மற்றும் masquerade பொருளியலை ஆவணப்படுத்துகிறது.