Исправљање сукоба локалне IP адресе након повезивања на VPN
Дупликат може бити на вашој локалној мрежи, доћи из преклапајућег удаљеног опсега или бити додељен два пута од стране пула тунела. Тестирајте пре него што промените нумерацију.
Сви ови извештаји звуче исто, а значе нешто друго: лаптоп се жали на сукоб адреса, али само понекад и углавном док је 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 објашњавају шта исправна сонда доказује, што је вредно знати пре него што сукоб прогласите стварним.