Ракувањето на WireGuard работи, но канцелариската подмрежа не одговара
WireGuard е активен и пингува серверот, но ништо на неговиот LAN не одговара. Проверете го префиксот на клиентот, проследувањето на серверот и патеката на одговорот.
Ракувањето завршува, wg show известува за неодамнешен пренос, и тунелската адреса на серверот одговара на ping. Но домаќин на LAN мрежата на серверот не. Три услови мора да важат истовремено: клиентот мора да го насочи префиксот на LAN во тунелот, серверот мора да ги проследи пакетите, а одговорот бара пат назад. Кога недостасува еден од трите, симптомот е ист.
AllowedIPs е и список за пристап и табела за рутирање
На клиентот, списокот AllowedIPs одлучува и што смее да се прати до тој пар и кои рути ги инсталира WireGuard. Записот за пар што ја наведува само тунелската адреса на серверот инсталира една рута до домаќин, па LAN одредиштата никогаш не влегуваат во тунелот. Додавањето на префиксот на LAN е првото нешто што треба да се провери, а тоа е и промената што најчесто недостасува по копирана конфигурација. Пар проширен на стандардна рута е друг дизајн и ќе го премести и интернет сообраќајот на клиентот.
Држете ја рутата до домаќин и префиксот на LAN како одделни записи. Ако канцеларијата има две подмрежи, двете припаѓаат на списокот, а префиксот што недостасува создава дефект што изгледа селективен, а не целосен.
[Peer] PublicKey = <server public key> Endpoint = vpn.example.net:51820 AllowedIPs = 10.66.0.1/32, 192.168.50.0/24
Проследувањето и преведувањето припаѓаат на серверот
На серверот му треба овозможено IP проследување, правило за проследување што прифаќа сообраќај што доаѓа од тунелот, и правило за преведување кон неговиот LAN интерфејс. Токму преведувањето го прави дизајнот функционален без допирање на секој домаќин на канцелариската мрежа. Тогаш одговорите се враќаат на серверот, а не на адреса за која LAN никогаш не слушнал. Без тоа, на секој домаќин му треба рута за подмрежата на тунелот и правило на огнениот ѕид што го дозволува, што ретко е прифатливо на мрежа што ја управува некој друг.
sysctl -w net.ipv4.ip_forward=1 iptables -A FORWARD -i wg0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Правилата додадени рачно исчезнуваат при престартување, затоа врзете ги за интерфејсот со hook командите во конфигурацијата на серверот. Збир од правила што го надживува својот интерфејс е начинот на кој машината завршува преведувајќи сообраќај за тунел што повеќе не постои.
Кога LAN се пресели, а правилото не
Замената на рутер што ја пренумерува канцелариската подмрежа е класичната верзија на овој дефект. Тунелот останува активен, ракувањето останува свежо, и ништо зад серверот не одговара, бидејќи правилото за преведување сѐ уште ја наведува старата адреса. Инсталациските скрипти често ја вградуваат LAN адресата на серверот во правило POSTROUTING, а по пренумерувањето таа адреса не постои на ниту еден интерфејс. Тогаш пакетите се препишуваат кон одредиште што не може да одговори.
iptables -t nat -n -L POSTROUTING ip -br addr show
Споредете ги двата излеза. Целта за преведување што не се појавува во списокот на интерфејси е дефектот, а неговото поправање е промена на една линија откако ќе ја видите. Правилото може да живее во генерирана единица, а не во конфигурацијата на WireGuard, затоа превчитајте ја таа единица по уредувањето и потврдете дека следното подигнување нема да ја препише вашата промена.
Две локации зад NAT имаат потреба од место за средба
Кога ниту една страна не прифаќа влезни врски, практичниот одговор е мал домаќин со јавна адреса и два WireGuard интерфејси. Секоја локација се поврзува нанадвор, средниот домаќин ја наведува LAN мрежата на секој пар во својот AllowedIPs, а проследувањето пренесува пакети меѓу двата тунели. Ништо во огнениот ѕид на ниту една локација не треба да се смени, и затоа овој дизајн лесно се шири.
Рутирањето меѓу локациите ги задржува оригиналните изворни адреси и затоа го задржува значењето на логирањето по домаќин. Преведувањето на средниот домаќин е поедноставно кога двете LAN мрежи се преклопуваат, но по цена на губење на идентитетот на изворот во логовите. Одлучете кое својство е важно пред да изберете.
Одделете ги слоевите со четири проверки
Направете една проверка по слој, наместо да менувате три работи и да се надевате. Првата го покажува возраста на ракувањето и бројачите за секој пар. Втората покажува дали клиентот навистина го насочува тоа одредиште во тунелот. Третата и четвртата ви кажуваат дали барањето пристигна и дали некоја политика го отфрли по пристигнувањето.
wg show ip route get 192.168.50.20 tcpdump -ni wg0 icmp iptables -vnL FORWARD --line-numbers
Барање што пристигнува и не предизвикува одговор упатува на патеката на одговорот или на домаќинот на LAN. Барање што никогаш не пристигнува упатува на AllowedIPs или на рутата на клиентот. Овие два исхода бараат различни поправки, а снимката е тоа што ги разликува.