程式碼

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

2025年2月19日 星期三

Openwrt: Support Bluetooth in D-Link M32

這一篇是紀錄,不是要上什麼pr什麼的。感謝Openwrt論譠上的討論,一些東西讓我可以比較有根據的去驗證。

更新 2025-02-21

更新2025-03-21

1. 看了一堆有的沒有的資料並且邊驗證邊試出來M32的藍芽是在MT7915AN的晶片上,經由UART3的TXD/RXD/CTS/RTS與MT7622B互連。

    1a. MT7622B自己也有藍芽但線路上是用0Ohm接地掉了,沒有拉天線出來使用。

    1b. 除了UART3的訊號外還有一個GPIO61會在Bootloader階段拉High。

    1c. 官方的M32的DTS與我手邊機器有些地方不一樣,在原始M32的討論篇中也有人提出來。所以改了也不少。參考連結Support for DLink M32 Mesh System and R32 Router

2. Openwrt論譠上有人提供了Unifi 6 Lite的Bluetooth Patch。幫助很大但也有限,後面再說明。參考連結 UART3 Bluetooth in UniFi 6 Lite

3. mt7915_patch_e2_hdr.bin這個檔案就自己想辦法了,不確定同平台的能不能通用。

4. 經過一連串的嘗試錯誤後的組合結果如下,不太會用diff與patch,打不進去的話再自己修改一下。

5. Build完後在目標機器上跑的時候需要先安裝WIFI Driver,接著安裝完btmtkuart後"必須"把/etc/modules.d/btmtkuart刪除,並在/etc/rc.local加入sleep 5;insmod btmtkuart;。

    5a. 因為MT7915的WIFI與BT的Reset控制是一起的,目前試出來的結論是由WIFI Driver控制。這樣在Software Reboot時才能正常。

    5b. 目前驗證的結論是要晚一點載入btmtkuart,才會正常的跑完Firmware Patch;否則隨機性的掉Frame後失敗。雖然可以寫進btmtkuart.c當中啦…但想想還是算了。

    5c. 順利的話開機會花9秒左右完成初始化,之後使用hciconfig hci0 up與hcitool -i hci0 lescan。