華碩路由器設(shè)置IPv6

校園網(wǎng)里的IPv6只能設(shè)成自動獲取ip,且分配到的就是一個單獨的IP(前綴長度128),只能給一個設(shè)備用,無法經(jīng)路由器再次下發(fā)。華碩路由器(TUF AX5400v2,刷了官改固件)的IPv6設(shè)置里只有幾個選項:native,靜態(tài)地址,passthrough,……(后面幾個不相關(guān))。首先排除靜態(tài)地址。經(jīng)測試發(fā)現(xiàn) passthrough 下只有路由器本身能獲得ipv6地址,但下面的局域網(wǎng)設(shè)備沒有ipv6地址;而如果用 native,若開啟 DHCP-PD,則結(jié)果和 passthrough 類似,但如果關(guān)閉 DHCP-PD,手動指定局域網(wǎng)網(wǎng)段,比如 fd00::1/64,則路由器可以獲取到 ipv6 地址,局域網(wǎng)內(nèi)設(shè)備也能活的到 fd00 開頭的本地地址,但是局域網(wǎng)設(shè)備無法通過 ipv6 連上外網(wǎng)。此時,內(nèi)網(wǎng)外網(wǎng)本身都已經(jīng)有 ipv6 支持了,問題出在路進行轉(zhuǎn)發(fā)時沒有進行nat!此時只需執(zhí)行如下命令后內(nèi)網(wǎng)就可以通過 ipv6 上網(wǎng)了!其中 eth4 是 WAN 口。

ip6tables -t nat -A POSTROUTING -o eth4 -j MASQUERADE

一、安裝 opkg

先說個不直接相關(guān)的事。一開始想通過 tcpdump 查看下流量,但系統(tǒng)上沒有,于是想到通過 opkg 安裝。最初參考 https://blog.csdn.net/u010051887/article/details/103888902 進行安裝,結(jié)果遇到問題,opkg 需要 /opt/var 目錄,然而 /opt 是只讀系統(tǒng)無法創(chuàng)建 var。最后如下解決的,首先 mkdir /jffs/opt,然后 cp -ra /opt/scripts /jffs/opt 把 /opt 下原有的一個目錄考過去以免被屏蔽,最后通過 mount --bind /jffs/opt /opt 綁定一下,這回 /opt 就可以寫了。在 /opt 下創(chuàng)建 bin, etc, lib, var 等目錄。然后下載安裝腳本 http://qnapware.zyxmon.org/binaries-armv7/installer/entware_install_arm.sh 進行安裝即可。然后就可以通過 opkg install tcpdump 安裝 tcpdump 了。

二、開機啟動

前面對 ip6tables 的設(shè)置重啟系統(tǒng)或重啟防火墻后就會消失,為此需讓它開機后自動運行。通過查看路由器界面中【系統(tǒng)記錄=>一般記錄文件】里的日志發(fā)現(xiàn)重啟防火墻后有一條執(zhí)行自定義腳本 /jffs/scripts/nat-start 的記錄。于是想到把命令加入改腳本即可。通過嘗試,上述 ip6tables -t nat ... 命令加進來確實有效,ipv6 可以正常工作了。但是我發(fā)現(xiàn)同時為打開 ipv6 的 ping 而加入的 ip6tables -I ICMP_V6 -j ACCEPT 命令卻沒有生效!原來是因為執(zhí)行這個腳本時對 ICMP_V6 鏈的設(shè)置操作還沒有執(zhí)行,我的命令被后來的命令覆蓋了從而無效。于是想到延遲幾秒再執(zhí)行我的命令,果然有效!最終,在 /jffs/scripts/nat-start 中加了一句

/jffs/scripts/myjob &

而 myjob 腳本內(nèi)容為

#!/bin/sh
ip6tables -t nat -A POSTROUTING -o eth4 -j MASQUERADE
mount --bind /jffs/opt /opt
sleep 5
ip6tables -I ICMP_V6 -j ACCEPT # allow ping

三、端口映射

路由器界面上的端口映射只對 ipv4 有效。而防火墻里的 ipv6 設(shè)置中添加的條目則只是更改 FORWARD 鏈,即轉(zhuǎn)發(fā)設(shè)置,但并不會做 nat 設(shè)置,所以還是無法訪問。轉(zhuǎn)發(fā)和 nat 必須同時正確設(shè)置才行。這里假設(shè)沒有用界面上的防火墻添加條目,直接用命令如果要設(shè)置到比如 fd00::1234:abcd 的 22 端口的映射,外網(wǎng)端口 3333,那么可以執(zhí)行如下命令

# 訪問端口 3333 的鏈接做地址轉(zhuǎn)換
ip6tables -t nat -A PREROUTING -p tcp -m tcp --dport 3333 -j DNAT --to-destination [fd00::1234:abcd]:22
# 允許到 fd00::1234:abcd 的轉(zhuǎn)發(fā)
ip6tables -I FORWARD  -d  fd00::1234:abcd  -p tcp -m tcp --dport 22  -j ACCEPT
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容