Како преместити Raspberry Pi VPN сервер на Ethernet
Преместите Raspberry Pi VPN сервер са Wi-Fi на Ethernet без промене назива крајње тачке, везивања листенера, прослеђивања порта или путање враћања у једном кораку.
Пребацивање Pi-ја са Wi-Fi на кабл изгледа као посао од пет минута и то остаје само ако премештање третирате као четири одвојене поставке уместо једне. Назив крајње тачке коју ваши клијенти позивају може остати потпуно исти док се адреса испод њега мења. Оно што се стварно квари јесте листенер прикован за стару адресу, прослеђивање порта још усмерено на бежични закуп, или повратна рута која излази кроз интерфејс који сте мислили да сте умировили. Овај водич држи путању опоравка отвореном на сваком кораку, тако да неуспели прелазак кошта само рестарт.
Запишите четири одговорна пре него што било шта искључите
Четири поставке одлучују да ли прелазак преживљава: адреса Pi-ја, адреса везивања OpenVPN, циљ преусмеравања рутера и путања коју одговори узимају. Запишите све четири пре него што додирнете кабл, јер када бежични закуп нестане, старе вредности више не можете прочитати са машине. Каблни интерфејс не наслеђује бежични профил, а на Bookworm-у адреса живи у NetworkManager-у док је Bullseye држи у dhcpcd.conf. Резервација која је приковала бежичну MAC адресу не говори ништа о eth0. Третирајте нову адресу као нову доделу којој је потребан сопствени доказ.
Old wireless lease: 10.42.7.24/24 on wlan0
New wired address: 10.42.7.31/24 on eth0
Client endpoint: vpn.lab.example:1194/udp
Листенер је други одговорни. Ако је сервис покренут са одређеном адресом везивања, сокет умире са старим интерфејсом; ако везује све адресе, сокет преживљава и правило рутера постаје једина ствар коју треба поправити.
Циљ преусмеравања и повратна рута су одговорни које људи прескачу. Прослеђивање које још показује на 10.42.7.24 шаље пристигла руковања на адресу коју Pi више нема, па клијенти истекну без иједне линије дневника на страни сервера. Повратна рута је важна када су оба линка накратко активна, јер Pi одговара кроз интерфејс који рутирајућа табела преферира, а то није увек оно на које је пакет стигао. Претрага руте испод показује које извориште кернел бира.
Прочитајте стварни сокет пре него што поверујете новој адреси
Конфигурационе датотеке описују намеру, а сокет описује стварност. Питајте покренути сервис на шта је везан уместо да верујете конфигурацији које се сећате. Приручник OpenVPN 2.6 дефинише --local као везивање на једну адресу и напомиње да изостављање везује сваки интерфејс.
sudo systemctl cat openvpn-server@server | grep -n -- '--local'
sudo ss -lunp '( sport = :1194 )'
Читајте колону локалне адресе уместо колоне стања. Ред који приказује 10.42.7.24:1194 значи да је сокет прикован за адресу коју ћете управо уклонити, док 0.0.0.0:1194 или *:1194 значи да ће демон сам следити промену интерфејса. Ако је адреса прикована, уредите профил и поново покрените јединицу уместо да ручно преписујете живи сокет, а затим потврдите да сервис још увек достиже своје датотеке сертификата и кључа.
Прођите кроз премештање у редоследу који вас држи доступним
Редослед је овде важнији од брзине. Подигните каблни линк док бежични још ради, потврдите нову адресу и повратну руту, а затим умировите бежични профил. Тај след држи радну сесију отвореном док замена не буде доказана.
ip -br addr show eth0
ip route get 203.0.113.10
nmcli -g ipv4.method,ipv4.addresses con show "Wired connection 1"
Прва команда одговара да ли је eth0 добио адресу коју сте намеравали, а друга исписује изворну адресу коју би кернел користио за одредиште изван мреже, па је покрените пре и после промене. Ако је то извориште још увек бежична адреса, каблни линк још није преферирана путања и тест извана ће пасти због разлога који нема никакве везе са OpenVPN-ом. Исправите преференцију рутирања пре него што додирнете прослеђивање.
Када су оба линка активна, Pi може преферирати бежичну задату руту јер је прва инсталирана или јер каблни линк носи вишу метрику. На Bookworm-у је подржано подешавање ipv4.route-metric на конекцији, а на Bullseye-у је еквивалент линија metric специфична за интерфејс у dhcpcd.conf. Деградирајте бежични линк уместо да га онемогућите, како би путања враћања остала једну команду далеко.
Докажите тунел извана, не из LAN-а
VPN конекција која ради са кауча доказује мање него што изгледа. Саобраћај из унутрашњости LAN-а према јавној адреси пролази кроз hairpin или рефлексијска правила која рутери имплементирају недоследно, па успешан LAN тест може коегзистирати са поквареном спољном путањом. Користите телефон на мобилним подацима, или било који домаћин изван мреже, за прихватни тест. Задржите LAN покушај као одвојену опциону дијагностику.
Затим читајте дневник редоследом којим пакети пристижу. Ништа уопште значи да руковање никада није стигло до Pi-ја, па је циљ преусмеравања или заштитни зид домаћина погрешан. Руковање које почне и заглави указује на кључеве, сертификате или MTU. Сесија која се заврши и падне обично значи повратну руту или другу задату руту, а линија дневника клијента Initialization Sequence Completed вам говори да се сам тунел подигао.
sudo journalctl -u openvpn-server@server -n 40 --no-pager
sudo tcpdump -ni any udp port 1194 -c 20
Ако се ништа не појави у дневнику сервера док клијент поново покушава, престаните да читате OpenVPN конфигурацију и вратите се на циљ преусмеравања. Снимак одговара на питање доласка у секундама, а долазни пакети без одговора сужавају проблем на руту.
Задржите враћање у једном кораку и умировите бежични профил
Оставите бежични профил инсталиран док каблни распоред не прође рестарт. nmcli con show наводи називе профила који ће вам требати, а избрисани профил мора се реконструисати из сећања у најгорем тренутку. Запишите назив интерфејса, методу адресирања и метрику поред остале четири вредности. Враћање које можете откуцати из белешке вреди више од оног које морате реконструисати.
Умировљење бежичне зависности је промена својства, а не брисање. Постављањем connection.autoconnect no акредитиви и историја адреса остају нетакнути док се Pi-ју онемогућава да се поново повеже на мрежу са које сте отишли.
nmcli con show
sudo nmcli con up "Wired connection 1"
sudo nmcli con mod "previously-used-wifi" connection.autoconnect no
Пре него што посао прогласите завршеним, потврдите четири ствари: циљ преусмеравања одговара каблној адреси, листенер је преживео рестарт, клијент извана завршава руковање, и Pi још увек одговара на каблној адреси након рестарта. Рестарт је најјефтинији начин да ухватите доделу која је постојала само у покренутом кернелу. Ако било која од четири не успе, поново подигните бежични профил помоћу sudo nmcli con up и упоредите забележене вредности са активним.