Кожная з гэтых скаргаў гучыць аднолькава і азначае рознае: ноўтбук скардзіцца на канфлікт адрасоў, але толькі часам, і пераважна тады, калі VPN уключаны. Тры асобныя няспраўнасці даюць гэтае паведамленне: сапраўдны дублікат у вашым уласным канале, перакрыццё, калі аддаленая сетка выкарыстоўвае дыяпазон вашай лакальнай сеткі і нічога не дублюецца, і тунель, які выдаў адзін адрас двум партнёрам. Выпраўленне ў кожным выпадку рознае, і няправільнае пераносіць сімптом замест таго, каб прыбраць яго. Таму вызначце, які выпадак у вас, перш чым нешта змяняць.

Тры няспраўнасці з адным паведамленнем пра памылку

Дублікат азначае, што дзве машыны ў адным сегменце прэтэндуюць на адзін адрас. Ядро заўважае гэта, бо адказ на яго ўласны запыт прыходзіць з іншага MAC, і што будзе далей залежыць ад стэка: Linux запісвае гэта ў журнал, Windows адключае інтэрфейс і піша запіс у сістэмны журнал, а кліент DHCP можа адхіліць прапанову.

Перакрыццё не дублюе ніводнага адраса. Ваша лакальная сетка — 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: ці перакрываюцца дзве сеткі?

Параўнайце прэфікс, які дае тунель, з прэфіксамі на вашых інтэрфейсах. Калі аддалены дыяпазон роўны вашай лакальнай сетцы або ўтрымлівае яе, няспраўнасць — перакрыццё, і падказка ў тым, што хост, дасяжны без VPN, знікае, або ваш прынтар адказвае на адрас офіса.

ip route get 192.168.1.10
ip -br addr show

Пошук маршруту кажа, які інтэрфейс выкарыстае ядро, і гэты адказ — увесь дыягназ. Калі ён паказвае тунель для адраса, які належыць вашаму лакальнаму прынтару, у вас перакрыццё, і ніякае абнаўленне арэнды гэтага не зменіць.

Ёсць тры сумленныя шляхі выйсця, і звычайна вам даступны толькі адзін. Аддалены бок можа маскаваць трафік для перакрыжаванай падсеткі, так што ваш кліент бачыць толькі адрас тунеля сервера. Тунель можа несці вузейшы аддалены прэфікс, які не сутыкаецца з вашай лакальнай сеткай. Або кліент можа маршрутызаваць па адрасе крыніцы з дапамогай палітычных правілаў, што працуе, але крохка і цяжка перадаць калегу.

Перанумараванне сеткі офіса рэдка залежыць ад вас. Перанумараванне ўласнай лакальнай сеткі, каб пазбегнуць сутыкнення, — большая змена, чым большасць людзей чакае, як толькі задзейнічаны прынтары, камеры і статычныя хасты.

Тэст 3: ці выдаў тунель адзін адрас двойчы?

У WireGuard няма пула адрасоў. Кожны партнёр вызначаецца сваім публічным ключом і прэфіксамі ў AllowedIPs, таму дублікат з'яўляецца, калі адзін і той жа адрас тунеля запісаны ў два запісы партнёраў або аднолькавая пара ключоў усталявана на дзвюх машынах.

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

Лічыльнікі трафіку — карысны слупок тут: партнёр, які паказвае нядаўняе рукапацісканне, але не паказвае перадачы, або адрасаваны няправільна, або яго зацяняе іншы запіс, што прэтэндуе на той жа прэфікс. Пастаўце прэфікс роўна на аднаго партнёра і дайце кожнай прыладзе ўласную пару ключоў.

OpenVPN мае пул, і тыповая калізія — агульны профіль кліента з фіксаваным радком --ifconfig, скапіяваным на другую машыну. Тады абодва кліенты запытваюць адзін і той жа адрас тунеля, і сервер прымае тую сесію, якую апрацуе першай. Знясіленне пула з --duplicate-cn дае падобны вынік, калі некалькі сесій аднаго сертыфіката спаборнічаюць за адзін запіс.

Для гэтага чытайце журнал сервера, а не журнал кліента. Сервер ведае, якая сесія заняла які адрас, і паўтаральныя адрасы там бачныя як папярэджанні, якія ніколі не даходзяць да кліента.

Выпраўляйце ў крыніцы, затым пераправерце абедзве прылады

Парадак важны. Спачатку выпраўце дублікат у лакальнай сетцы, бо кліент, які не можа ўтрымаць адрас, не ўтрымае і тунель. Затым выпраўце забеспячэнне на баку VPN, бо змена прызначэння пула на баку кліента адмяняецца пры наступным падключэнні. Нарэшце, разбярыцеся з дубляванымі ідэнтычнасцямі: асобныя пары ключоў у WireGuard, асобныя сертыфікаты або хаця б асобныя профілі ў OpenVPN.

На кліенце механічная частка кароткая. Вызваліце і абнавіце арэнду DHCP або папрасіце змяніць адрас на серверы для рэзервавання. Не ўводзьце выпадковы адрас, які выглядае свабодным.

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

Затым праверце з абодвух канцоў, а не з аднаго. Пацвердзіце шлюз, затым паслугу, якая вам сапраўды патрэбная, затым перападключыцеся і паўтарыце. Калі задзейнічаны дзве прылады, праверце абедзве: перанос аднаго адраса пакідае другую са састарэлымі запісамі суседзяў або старой арэндай, якая вернецца пазней.

Чаго не варта рабіць па дарозе

Не заглушайце сімптом. Выяўленне дублікатаў адрасоў — гэта тое, што не дае вам заняць ужо выкарыстоўваемы адрас, і яго адключэнне ператварае бачны канфлікт у перарывістыя страты пакетаў, якія значна цяжэй адсачыць. Тое ж датычыцца прыняцця папярэджання пра сертыфікат ад нечаканага хоста: гэта зусім не праблема адраса, і націск працягу хавае іншую няспраўнасць.

Не змяняйце адрасацыю кіраванай сеткі самастойна. Запішыце зыходную наладу, спытайце ўладальніка, калі адрас прызначаецца цэнтралізавана, і трымайце змену дастаткова малой, каб яе можна было адмяніць. Правілы выяўлення канфліктаў адрасоў RFC 5227 тлумачаць, што даказвае правільны запыт, і гэта варта ведаць, перш чым назваць канфлікт сапраўдным.

Падобныя артыкулы