透過 VLAN 從不同出口獲得 IPv4/IPv6 地址構建雙棧網路

Posted on

換了 CPE 使用 LTE 網路作爲家裏的主出口後,淺羽發現這神奇的國內特供版 CPE 不能支援 IPv6,於是特意去設定裏看了,發現似乎是電信沒有給到 IPv6。原先的網路是有 IPv6 的。於是爲了某些 IPv6-only 網站,淺羽動起了壞心思腦筋。

最基本的方法當然就是兩根網線插兩個網路接埠對應兩個出口了。這樣,一個埠配 IPv4,一個埠配 IPv6,因爲走不同的路由表所以也相互沒有影響。問題就在於,淺羽目前的主路由器是之前配的迷你伺服器,並沒有配置額外的網路卡,因此只有兩個網路接埠。那麼只能打 VLAN 的主意了。於是做一下規劃,基本思路是接入點走不同的 VLAN,然後在 Router 的WAN 上聚合 VLAN;接下來把 LAN 和其他所有的用戶放到一個 VLAN 裏就可以了

(後面還有:設定交換機、設定 OpenWRT、IPv6 穿透)

這麼做要設定的 VLAN 10 和 VLAN 11 分別對應兩個接入點,需要交換機幫忙打標記;Router 運行 OpenWRT,可以處理好 VLAN 所以不需要標記。其他的客戶端需要無感知接入,所以對應的 Port 4~8 也需要交換機幫忙。整理一下,可以得出一個 VLAN 表。

'U' stands for 'Untagged', 'T' stands for 'Tagged'
VLAN 1UUUUU
VLAN 10UT
VLAN 11UT

然後在交換機裏按表設定好 VLAN。

然後在 OpenWRT 裏設定從同一個接埠的不同 VLAN 分別獲取 IPv4/IPv6。在 LuCI 裏需要改 Network 需要刪除再創建很麻煩,於是一個小的 Trick 就是直接修改 /etc/config/network 檔案,把其中的 ifname 行修改爲 device.vlan_id。比如淺羽這裏就修改爲:

config interface 'wan'
    option ifname 'eth0.10'
    option proto 'dhcp'

config interface 'wan6'
    option proto 'dhcpv6'
    option ifname 'eth0.11'
    option reqaddress 'try'
    option reqprefix 'auto'

然後還要修改一下 IPv6 穿透。按照之前的文章設定好 IPv6 穿透之後,還需要注意一下穿透源需要設定爲 wan6 即 IPv6 的接入點。然後按照慣例重啓一下網路和 DHCP:

/etc/init.d/network restart
/etc/init.d/odhcpd restart

就可以看到 IPv6 啦。照例上一下北郵人 BT,並沒有問題,就算折騰完了。

不過代價就是,本來只佔用交換機的一個接埠,這樣就要佔用四個了。交換機要爆炸了。


This site uses Akismet to reduce spam. Learn how your comment data is processed.