程式碼

2025年11月12日 星期三

Openwrt Multi-wan與Wireguard的應用

     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還要晚