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 врска и претпоставува едно име на уред е мала грешка со долг живот.

Проверете ја поделбата со три барања

Снимете ја табелата додека сте поврзани и забележете кој интерфејс го опслужува тунелот. Потоа проверете го конкретното одредиште наместо да верувате во излезниот статус на командата што го создала. Излезниот код известува дали алатката ги прифатила аргументите, а не дали сообраќајот оди по патеката што сте ја намериле.

Завршете со три барања што ја докажуваат поделбата: еден внатрешен домаќин по адреса, едно внатрешно име преку внатрешниот резолвер и една јавна страница што сѐ уште треба да ја користи локалната врска. Ако јавната страница сега поминува и низ тунелот, поделбата никогаш не се случила, што и да изгледа дека вели листата рути.

Поврзете се уште еднаш и повторете го внатрешното барање, зашто рачно додадените рути можат да го надживеат интерфејсот што ги направил валидни и тивко да го претворат сообраќајот во црна дупка откако тунелот ќе падне.

Поврзани статии