Wireguard長期使用下來都沒什麼問題,但就是有一些不便…
Openwrt的環境下Wireguard會走Openwrt的Default routing到外網,然而我的環境是pppoe靜態ip。
所以就會讓路由器的內網與Wireguard用的靜態ip共用…缺點就是靜態ip久了可能會被一些網站註記或是被針對攻擊…
之前就有試著要作成Multi-wan,讓Wireguard可以從靜態ip連線,而內網可以走動態ip的預設路由。更甚至是可以讓Wireguard連接到路由器的靜態ip連外網…就是翻牆啦。
基本設定,在網路的介面當中設定兩個WAN介面(wan, static),皆為pppoe,設定不同的Firewall zone。同時在Firewall當中設定規則。
Network -> Interface
Static Interface: static, pppoe-static, zone: wan-static 記得將 預設路由 取消
Dynamic Interface: wan, pppoe-wan, zone: wan
Wireguard port: 51820, zone: vpn
Network -> Firewall -> General
lan -> {wan, vpn}, accept/accept/accept
wan -> REJECT, reject/accept/reject, masquerade
vpn -> {lan, wan-static, wan}, accept/accept/accept
wan_static -> REJECT, reject/accept/reject, masquerade
安裝ip-full以啟用ip rule sport的功能。
opkg install ip-full
ip rule add sport 51820 table 102
ip route add default dev pppoe-static table 102
使用tcpdump觀察封包進出的狀況,成功的時候會In與Out都是同一個pppoe-static的界面。
tcpdump -i any host {Wireguard遠端的ip} and port 51820
成功後可以在將table 102改用文字化,比較容易記。
echo "102 wireguard" >> /etc/iproute2/rt_tables
寫成Script然後開機時自動執行
vi /root/wireguard-static.sh
#!/bin/sh
ip rule add sport 51820 table 102
ip route add default dev pppoe-static table wireguard
ip route add 192.168.1.0/24 dev br-lan table wireguard
chmod a+x /root/wireguard-static.sh
vi /etc/rc.local
/root/wireguard-static.sh
待驗證…因為可能pppoe-static介面產生的時間比rc.local還要晚