Mac жүйесіндегі L2TP бөлінген маршруттар: неге хост мекенжайы жұмыс істемейді
setadditionalroutes желі мен маска жұптарын қалайды, бүкіл тізімді алмастырады және қызметтің дәл атауын талап етеді. Шлюзді кінәламас бұрын кестені тексеріңіз.
VPN қосылады, мәзір жолағы оны көрсетеді, бірақ ішкі хост бәрібір уақыт шегінен өтеді. Мұндай жағдайда үш ықтимал себеп бар, және қайсысы қатысты екені туннельдің қалай конфигурацияланғанына байланысты. Не маршрут командасы желі мекенжайы қажет жерде хост мекенжайын қолданды, не профильдің өзі шешімді жұтып қоятын әдепкі маршрутты орнатады, не клиент профиль кілтінің орнына ілгек қажет ететін PPP туннелі. Оларды осы ретпен тексеріңіз, өйткені біріншісін жоққа шығару ең арзан.
Мақсат — желі мекенжайы, маска префиксті сипаттайды
networksetup -setadditionalroutes мақсаттың, ішкі желі маскасының және шлюздің үштіктерін қабылдайды. Бір ішкі желіні туннель арқылы жіберетін шақыру былай көрінеді:
sudo networksetup -setadditionalroutes "VPN (L2TP)" 192.168.1.0 255.255.255.0 10.2.0.0
Мақсаттың не екеніне назар аударыңыз: желі мекенжайы, сіз жетуге тырысып жатқан сервердің мекенжайы емес. Осы мақаланы тудырған жағдайда, сол орында 192.168.1.20 бар бірдей команда ешқандай пайдалы нәрсе істемеді, ал оны 192.168.1.0-пен ауыстыру бірден жұмыс істеді. Сол маска, сол шлюз, бір басқа сан. Бұл бүкіл сәтсіздік кішірейтілген түрде.
Себеп — саясат емес, арифметика. /24 маскамен жұпталған хост мекенжайы 192.168.1.0/24-ті сипаттамайды; ол маршруттау кестесі пайдалы ұстай алмайтын нәрсені сипаттайды, сондықтан жазба қабылданбайды немесе еленбейді және туннель ақырында ойлағаныңыздан азын тасиды.
Дәл бір хост қажет болса, хост мекенжайын 255.255.255.255 маскасымен қолданыңыз. Дәл осы жерде аралас жұптар қателеседі, хост мекенжайын пайдаланудың өзі емес. Бір мекенжайдан құрылған /32 заңды маршрут; бір мекенжайдан құрылған /24 қате.
Шақыру тізімді алмастырады, ал атау — тура мағынада
Алғашқы әрекетте адамдарды екі мінез-құлық таңғалдырады. Команда қосудың орнына қосымша маршруттардың толық тізімін орнатады, сондықтан бір префикс қосатын шақыру бұрын болған басқаларын үнсіз жояды. Бүкіл жиынды бір шақыруда құрыңыз.
Қызмет атауы да сіз ойлап тапқан белгі емес. Оны құралдан оқып, түрінің жұрнағымен қоса дәл көшіріңіз:
networksetup -listallnetworkservices
Бір таңбаға ерекшеленетін атау оқуға тұрарлық қате де, маршрут та бермейді. Мұнда дұрыс тәсіл — көшіріп қою, жадтан қайта теру емес.
Профиль әдепкі маршрутты талап еткенде
Бөлінген маршруттар өздері анық қамтымайтын кез келген мақсат үшін әдепкі маршрутқа жол береді, ал толық туннельге конфигурацияланған L2TP профилі дәл соны орнатады. Профиль бәрі туннель арқылы өтеді десе, қосымша маршруттар тізімі өте аз өзгереді. Сіздің жазбаңыз қате емес; ол ешқашан атамайтын мақсаттар үшін жай ғана қатысы жоқ. Мұны басқару әдетте қандай да бір маршрут командасында емес, профильдің барлық трафикті жіберу параметрінде болады.
Тағы жазбаларды өңдемес бұрын қандай модель керегін шешіңіз. Ерекшеліктері бар толық туннель — нақты префикстері бар бөлінген туннельден басқа конфигурация, ал екеуін араластыру ешкім болжай алмайтын кесте жасайды.
Егер ұйым толық туннельді талап етсе, оны жергілікті бөлуге тырысуды доғарып, талапты саясат иесіне апарыңыз. Оған қайшы келетін жергілікті қосылған маршрут келесі профиль жаңартуымен бәрібір жойылады.
PPP туннельдеріне кілттің орнына ілгек керек
PPP негізіндегі туннельдер үшін defaultroute әдепкі маршрут жасайтын профиль кілті; оны алып тастасаңыз, клиент әр мақсатты талап етуді доғарады. Содан кейін маршруттар интерфейс пайда болғаннан кейін қосылады, әдетте /etc/ppp/ip-up ішінен:
#!/bin/sh
/sbin/route add -net 192.168.1.0 -interface ppp0
Скриптті root иелігінде және орындалатын күйде ұстаңыз, машинада бірнеше туннель профилі болса, интерфейс атауына қорғаныс қосыңыз. Әр PPP байланысы үшін іске қосылып, бір құрылғы атауын болжайтын ілгек — ұзақ өмірлі шағын қате.
Бөлінуді үш сұраумен тексеріңіз
Қосылған кезде кестені жазып алыңыз және қай интерфейс туннельге қызмет ететінін белгілеңіз. Содан кейін оны жасаған команданың шығу мәртебесіне сенудің орнына нақты мақсатты тексеріңіз. Шығу коды құралдың аргументтерді қабылдағанын хабарлайды, трафиктің сіз ойлаған жолмен жүргенін емес.
Бөлінуді дәлелдейтін үш сұраумен аяқтаңыз: мекенжай бойынша бір ішкі хост, ішкі шешуші арқылы бір ішкі атау және әлі де жергілікті қосылымды қолдануы тиіс бір ашық сайт. Егер ашық сайт енді туннель арқылы да өтсе, маршруттар тізімі не десе де, бөліну ешқашан болмаған.
Тағы бір рет қосылып, ішкі сұрауды қайталаңыз, өйткені қолмен қосылған маршруттар оларды жарамды еткен интерфейстен ұзақ өмір сүруі мүмкін және туннель құлағаннан кейін трафикті үнсіз қара қуысқа айналдырады.