Android VPN வழிமாற்றம்: main அட்டவணைக்கு முன் கொள்கை விதிகள்
Android எந்த இலக்குத் தேடலுக்கும் முன் uid மற்றும் குறி விதிகளால் வழிமாற்று அட்டவணையைத் தேர்ந்தெடுக்கிறது, எனவே main இல் சேர்க்கப்பட்ட வழி ஒருபோதும் சரிபார்க்கப்படாமல் இருக்கலாம்.
Android இல் main அட்டவணையில் சேர்க்கப்பட்ட ஒரு வழி ஒவ்வொரு பட்டியலிலும் சரியாகத் தெரிகிறது, ஆனாலும் போக்குவரத்தை எடுத்துச் செல்லவில்லை. காரணம், main அட்டவணை பல விருப்பங்களில் ஒன்று மட்டுமே, அது முதலில் கேட்கப்படுவதில்லை. Android இன் வலையமைப்புச் சேவை, இலக்கு முகவரியில் இல்லாத தகவலைப் பயன்படுத்தி வழிமாற்று அட்டவணையைத் தேர்ந்தெடுக்கும் கொள்கை விதிகளை உருவாக்குகிறது — பயன்பாட்டின் uid, தொகுப்பில் உள்ள குறி, அது வந்த இடைமுகம் — மற்றும் இலக்குத் தேடல் அதன் பிறகு, அந்த விதிகள் தேர்ந்தெடுத்த அட்டவணைக்குள் நடைபெறுகிறது.
நிலையான வரிசையில் மூன்று முடிவுகள்
வெளியேறும் ஒரு தொகுப்பு மூன்று தனித்தனி முடிவுகளை எடுக்கிறது. முதலில், ஒரு கொள்கை விதி எந்த வழிமாற்று அட்டவணை பொருந்துகிறது என்பதைத் தீர்மானிக்கிறது. இரண்டாவது, அந்த அட்டவணைக்குள் உள்ள ஒரு வழி அடுத்த தாவலையும் வெளியேறும் இடைமுகத்தையும் தீர்மானிக்கிறது. மூன்றாவது, netfilter கொக்கிகள் தொகுப்பு தப்பிப்பதா, மாற்றப்படுவதா அல்லது திருப்பிவிடப்படுவதா என்பதைத் தீர்மானிக்கின்றன.
ஒவ்வொரு நிலையும் தன் கேள்விக்கு மட்டுமே பதிலளிக்க முடியும் என்பதால் வரிசை முக்கியம். தொகுப்பை ஏற்கும் ஃபயர்வால் விதி அட்டவணையைத் தேர்ந்தெடுக்காது, எந்த விதியும் தேர்ந்தெடுக்காத அட்டவணையில் சேர்க்கப்படும் வழி செயலற்றதாகவே இருக்கும். Android VPN பற்றிய பெரும்பாலான குழப்பம் மூன்றில் ஒன்றைச் சரிசெய்து எந்த மாற்றமும் காணாததிலிருந்து வருகிறது, ஏனெனில் பிழை மற்றொன்றில் இருந்தது.
| Stage | Selector | What it cannot decide |
|---|---|---|
| Policy rule | uid range, mark, incoming interface | Which route exists inside the table |
| Route lookup | Destination prefix, longest match | Whether the packet is allowed out |
| Netfilter hook | Chain position, match conditions | Which table was selected |
குறிகள் தொகுக்கப்பட்ட புலம், உங்கள் சொந்த லேபிள் அல்ல
Android பல உண்மைகளை ஒரே குறி மதிப்பில் தொகுக்கிறது: எந்த வலையமைப்பு தேர்ந்தெடுக்கப்பட்டது, ஒரு பயன்பாடு வலையமைப்பை வெளிப்படையாகத் தேர்ந்தெடுத்ததா, ஒரு சாக்கெட் VPN இலிருந்து பாதுகாக்கப்பட்டுள்ளதா, மற்றும் அனுமதிகளுடன் தொடர்புடைய பிட்கள். AOSP இன் fwmark தலைப்பு தற்போதைய மரத்திற்கு அந்த அமைப்பை வரையறுக்கிறது, அமைப்பு வெளியீடுகளுக்கு இடையே மாறும் தளத்தின் உள் விவரம்.
அதனால்தான் Android இல் iptables -j MARK --set-mark மூலம் முழு குறி மதிப்பை எழுதுவது ஆபத்தானது. அது குறிச்சொல்லைச் சேர்ப்பதில்லை; கணினி ஏற்கனவே செய்த வலையமைப்புத் தேர்வை அது மாற்றுகிறது. பின்னர் தொகுப்பு வேறு விதிகளுடன் பொருந்துகிறது, இது எந்த பிட்கள் மீண்டும் எழுதப்பட்டன என்பதைப் பொறுத்து VPN வேலை செய்யத் தொடங்கியதாகவோ தொடர்பில்லாத பயன்பாடு இணைப்பை இழந்ததாகவோ தோன்றலாம்.
குறிகளைத் தொட வேண்டியிருந்தால், முதலில் தற்போதைய மதிப்பைப் படித்து, நீங்கள் புரிந்துகொள்ளும் பிட்கள் மட்டும் மாறும் வகையில் முகமூடியைப் பயன்படுத்துங்கள்:
ip rule show
ip route show table all | head -40
ip route get 10.20.4.11இணைப்புக் குறி தொகுப்புக் குறியிலிருந்து தனி பொருள், இரண்டும் வழி அல்ல. பதில் தொகுப்புகளில் குறியை மீட்டெடுப்பது வெளியேறும்போது அட்டவணையைத் தேர்ந்தெடுப்பதிலிருந்து வேறு படி, அதனால்தான் ஒரு திசைச் சரிசெய்தல்கள் திறந்து பின்னர் தொங்கும் இணைப்புகளை உருவாக்குகின்றன.
விதிகள் மற்றும் அட்டவணைகளின் உரிமையாளர் யார்
Android இன் வலையமைப்புச் சேவையான netd விதிகளையும் ஒவ்வொரு வலையமைப்புக்கான அட்டவணைகளையும் உருவாக்குகிறது. AOSP RouteController என்பது VPN, இயற்பியல் வலையமைப்புகள் மற்றும் uid வரம்புகளுக்காக அந்த விதிகள் இணைக்கப்படும் இடம், அதன் வாழ்க்கைச் சுழற்சி உள்ளமைவுக் கோப்புடன் அல்ல, வலையமைப்பு நிகழ்வுகளுடன் பிணைக்கப்பட்டுள்ளது.
இரண்டு விளைவுகள் உண்டு. முதலில், ஒரு சாதனத்தில் நீங்கள் காணும் முன்னுரிமைகளும் அட்டவணை எண்களும் கட்டமைப்பின் உள் விவரங்கள், இடைமுகம் அல்ல: வேறு Android பதிப்பில் ஒரே மாதிரி தெரியும் எண்கள் முற்றிலும் வேறு பொருளைக் கொள்ளலாம். இரண்டாவது, வலையமைப்புகள் மாறும்போது நிலை மீண்டும் கட்டப்படுகிறது, எனவே இன்று root ஷெல்லில் இருந்து செருகப்பட்ட விதி அடுத்த Wi-Fi மாற்றத்திற்குப் பிறகு மறைந்திருக்கலாம்.
இந்த மறைவு பெரும்பாலும் கணினி ஒரு வழியைப் புறக்கணிக்கிறது எனப் புகாரளிக்கப்படுகிறது. உண்மையில் நடந்தது, அட்டவணையைத் தேர்ந்தெடுத்த விதி இனி இல்லை, அட்டவணைக்குள் உள்ள வழி இப்போது தொகுப்பின் பார்வையில் அணுக முடியாதது. மீண்டும் இணைந்த பிறகு வேலை செய்த உள்ளமைவு வேலை செய்வதை நிறுத்தும்போது வழிப் பட்டியலை அல்ல, விதிப் பட்டியலைச் சரிபார்க்கவும்.
கொக்கிகளின் வரிசை பற்றிய கேள்விகளுக்கு பொதுவான பதில் இல்லை
iptables VPN வழிமாற்றத்திற்கு முன் இயங்குகிறதா என்ற கேள்விக்கு தொகுப்பின் பாதையைக் குறிப்பிடாமல் பதிலளிக்க முடியாது. உள்ளூரில் உருவாக்கப்பட்ட தொகுப்பு output கொக்கி வழியாகச் செல்கிறது, அங்கு குறி மாற்றம் மறுவழிமாற்றச் சரிபார்ப்பைத் தூண்டுகிறது — இது இரண்டாவது தேடல், முதல் தேடலின் பின்னோக்கிய திருத்தம் அல்ல. tether செய்யப்பட்ட கிளையண்டிலிருந்து வரும் தொகுப்பு prerouting பாதை வழியாகச் சென்று அதற்குப் பதிலாக முன்னனுப்பப்படுகிறது, அதைப் பார்க்கும் சங்கிலிகள் வேறானவை.
எனவே ஒரே விதி ஒரு பயன்பாட்டின் போக்குவரத்துக்கு பயனுள்ளதாகவும் tether போக்குவரத்துக்கு கண்ணுக்குத் தெரியாததாகவும் இருக்கலாம், பூஜ்ஜியத்தில் நிற்கும் எண்ணிக்கையாளர் தொகுப்பு எந்தப் பாதையை எடுத்தது என்பதைச் சொல்கிறது, விதி தவறா என்பதை அல்ல. எந்தப் பொருத்த நிபந்தனையையும் மாற்றும் முன் எண்ணிக்கையாளர்கள் மூலம் பாதையை உறுதிப்படுத்துங்கள்.
கொள்கை வழிமாற்றப் பிழையைப் பார்ப்பது கடினமாகும் நிலையும் இதுவே. இருக்கிற ஆனால் இலக்கைக் கொண்டிராத அட்டவணைக்கு வழிமாற்றுவது ஃபயர்வால் வீழ்ச்சி போலத் தோன்றும் வலையமைப்பு அணுக முடியாததை உருவாக்குகிறது, அதேசமயம் ஃபயர்வால் வீழ்ச்சி வழிமாற்ற கருந்துளை போலத் தோன்றும் நேர முடிவை உருவாக்குகிறது.
கணினியின் உள்ளேயே கண்டறியுங்கள், அல்லது அதை விட்டுவிடுங்கள்
அங்கீகரிக்கப்பட்ட மறுஆய்வுக்கு, எதையும் தொடுவதற்கு முன் நான்கு உண்மைகளை நிறுவுங்கள்: பயன்பாட்டின் uid மற்றும் சுயவிவரம், Android அதற்குத் தேர்ந்தெடுத்த வலையமைப்பு, VPN அந்தப் பயன்பாட்டைச் சேர்க்கிறதா, மற்றும் பிரச்சினை இரு முகவரிக் குடும்பங்களிலும் உள்ளதா. ஒவ்வொரு பயன்பாட்டு விலக்கும் எந்த வழிமாற்றக் குறையும் இல்லாமல் VPN வேலை செய்யவில்லை என்ற பல அறிக்கைகளை விளக்குகிறது.
பின்னர் உண்மையில் நடைமுறையில் உள்ள விதிகள், முகமூடிகள் மற்றும் அட்டவணைகளைப் படித்து, கண்காணிப்பு சாளரத்திற்குள் வலையமைப்பு மாற்றத்தை வைத்திருங்கள். மீண்டும் இணைவதன் முழுவதும் நடத்தை மாறினால், நீங்கள் பார்க்கும் முகாமைத்துவ வாழ்க்கைச் சுழற்சி, காணாமல் போன வழி அல்ல.
சாதாரண தேவைகளுக்கு ஆதரவளிக்கப்படும் கட்டுப்பாடுகளைப் பயன்படுத்துங்கள்: ஒவ்வொரு பயன்பாட்டு சேர்ப்பு மற்றும் விலக்கு VPN பயன்பாட்டில், மற்றும் குறிப்பிட்ட பாதை தேவைப்படும் அனைத்திற்கும் தளத்தின் சொந்த வலையமைப்புத் தேர்வு. ஒரு சிறப்புரிமை ஒருங்கிணைப்பு உண்மையிலேயே வழிமாற்ற இயந்திரத்துடன் ஒத்துழைக்க வேண்டுமானால், நீங்கள் ஆதரிக்கும் சரியான Android பதிப்பின் செயலாக்கத்தை இலக்காகக் கொண்டு, அதன் உரிமையாளர் கூறு மூலம் அதன் வாழ்க்கைச் சுழற்சியைப் பராமரியுங்கள். தளச் சங்கிலிகளை அழிப்பது அல்லது உயர் முன்னுரிமை விதியைச் செருகுவது கண்டறிதலை இரண்டாவது வலையமைப்பு மேலாளராக மாற்றுகிறது, தொலைபேசி அதற்கேற்ப நடந்துகொள்ளும்.