Секој од овие извештаи звучи исто и значи нешто друго: лаптопот се жали на конфликт на адреси, но само понекогаш, и најчесто додека VPN е вклучен. Три одделни дефекти ја создаваат таа порака: вистински дупликат на вашата сопствена врска, преклопување каде далечната мрежа го користи вашиот LAN опсег и ништо не се дуплира, и тунел што дал една адреса на два партнера. Поправката е различна во секој случај, а погрешната го преместува симптомот наместо да го отстрани. Затоа одлучете кој случај го имате пред да менувате нешто.

Три дефекти со една порака за грешка

Дупликат значи дека две машини во истиот сегмент се обезбедуваат за една адреса. Јадрото го забележува тоа зашто одговорот на неговата сопствена сонда доаѓа од друга MAC, и што се случува потоа зависи од стекот: Linux го запишува, Windows ја онеспособува интерфејсот и пишува запис во системскиот дневник, а DHCP клиентот може да ја одбие понудата.

Преклопувањето не дуплира ниту една адреса. Вашиот LAN е 192.168.1.0/24, канцелариската мрежа е исто 192.168.1.0/24, и сега рутата до канцеларијата покажува кон адреси што се и вашиот печатач и вашиот NAS. Во смисла на ARP ништо не е во конфликт; пакетот едноставно оди до погрешниот уред во една од двете мрежи.

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

Тест 1: дали дупликатот е во вашиот сегмент?

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

ip -br addr
ip neigh
ip route show table all | grep -E 'wg|tun|ppp'

Во Windows истите информации доаѓаат од ipconfig /all и Get-NetIPAddress, со кешот на соседи во arp -a. Ако спорната адреса е на физичкиот адаптер и жалбата се појавува без вклучен VPN, VPN е набљудувач и треба да престанете да го дијагностицирате.

За да докажете дупликат наместо да погодувате, проверете ја адресата од уред што не ја поседува. arping -D ја испраќа сондата со нулта изворна адреса, па одговор од неочекувана MAC докажува дека друг домаќин веќе одговара на таа адреса.

sudo arping -D -I eth0 -c 3 192.168.1.50

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

Тест 2: дали двете мрежи се преклопуваат?

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

ip route get 192.168.1.10
ip -br addr show

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

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

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

Тест 3: дали тунелот дал една адреса двапати?

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

wg show all allowed-ips
wg show wg0 latest-handshakes
wg show wg0 transfer

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

OpenVPN има базен, и вообичаениот судир е заеднички клиентски профил со фиксна линија --ifconfig копирана на втора машина. Тогаш двата клиенти ја бараат истата адреса на тунел, и серверот ја прифаќа сесијата што ја обработува прва. Исцрпувањето на базенот со --duplicate-cn дава сличен резултат кога неколку сесии на еден сертификат се натпреваруваат за еден запис.

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

Поправете во изворот, потоа проверете ги двата уреда повторно

Редоследот е важен. Прво поправете дупликат во LAN, зашто клиент што не може да задржи адреса не може да задржи ни тунел. Потоа поправете го обезбедувањето на страната на VPN, зашто промена од клиентска страна на доделување од базенот се поништува при следното поврзување. На крај, справете се со дуплирани идентитети: одделни парови клучеви на WireGuard, одделни сертификати или барем одделни профили на OpenVPN.

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

sudo dhclient -r eth0 && sudo dhclient eth0
ipconfig /release && ipconfig /renew

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

Што да не правите на патот

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

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

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