Клиентот се автентицира, добива адреса од базенот и стигнува до услугите на VPN домаќинот, но секоја јавна дестинација завршува со истекување на времето. Така изгледа тунел без излез и така останува додека не се исполнат четири одделни работи. Клиентот мора да прифати стандардна рута, серверот мора да препраќа, огнениот ѕид мора да го дозволи преминот, а одговорите бараат пат назад до базенот. Сите четири дефекти делат еден симптом, затоа менувајте по еден елемент на обид и запишувајте го резултатот.

Турнете ја стандардната рута и проверете што инсталирал клиентот

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

push "redirect-gateway def1"

По повторното поврзување, прочитајте ја табелата за рутирање на клиентот наместо да му верувате на профилот. На Linux двата записи /1 се појавуваат покрај оригиналната стандардна рута, а Windows го прикажува истиот пар како 0.0.0.0/1 и 128.0.0.0/1. Клиент што ги игнорира турнатите опции, или оној што е конфигуриран да ги одбие, ја задржува старата стандардна рута и никогаш не испраќа интернет сообраќај во тунелот. Решете го ова прашање пред да смените нешто на серверот, бидејќи ниедно правило на серверската страна не може да го надомести.

Препраќањето е поставка на серверот, не на VPN

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

sysctl net.ipv4.ip_forward
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-vpn-forward.conf
sudo sysctl --system

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

Дозволете точно оној премин што го сакате, и ништо друго

Препратените пакети го поминуваат патот forward; сообраќајот упатен до самиот VPN домаќин го поминува input. Тоа се различни одлуки, а отворањето на патот input не дозволува премин низ машината. Нивното мешање е најчестата причина зошто огнениот ѕид изгледа како да дозволува сѐ, а клиентите сѐ уште добиваат истекување.

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

sudo iptables -A FORWARD -i tun0 -o eth0 -s 10.90.0.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

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

Дајте им на одговорите каде да одат

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

sudo iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o eth0 -j MASQUERADE

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

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

Докажете го од клиентот, не од школката на серверот

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

curl -4 -m 5 http://198.51.100.10/
dig +short example.com

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

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