OPNsense 固定制 IPv6 教學

前言

最近申請了中華電信固定制的光世代
終於有可以上網的 IPv6
看了大部分網路上的教學,都是偏向 DHCP or PPPoEIPv6
覺得自己來寫一篇 OPNsense 固定制 IPv6 教學
希望把這篇記錄下來可以幫助那些跟我一樣
不喜歡那些家用的路由器
喜歡自己搞一個 HomeLab
比如我就是用 OPNsense 來負責我的對外網路
以後再來寫相關血淚史🤣

為什麼要用 IPv6

OPNsense 固定制 IPv6

先看一下兩種主要的協定特點

IPv4

  1. 位址長度:IPv4 位址長度為 32 位元,通常以十進制表示,並以點分隔
  2. NAT:IPv4 網路常常使用 NAT 以允許多個主機共享單一公共 IPv4 位址
  3. 優先權:IPv4 並未內建對流量優先權的支援

IPv6

  1. 位址長度:IPv6 位址長度為 128 位元,以冒號分隔的八組十六進制數字表示
  2. NAT 不再需要:IPv6 不需要 NAT,因為它提供足夠的位址供每個設備直接連接到 Internet
  3. 自動配置:IPv6 內建支援 SLAAC(Stateless Address Autoconfiguration),使設備能夠自動配置 IPv6 位址
  4. 優先權和流量分類:IPv6 內建支援對流量的優先權和分類,有助於提高服務品質

雖然 IPv4 有這麼多 IP 位址,但依舊在 2011 年 的 2 月 3 日消耗殆盡。

節錄自 iThome

現在公共的 IPv4 已經是稀缺資源
對筆者來說,除了這個網誌
還有一些需要使用到固定 IP 的服務,未來有可能還需要擴展
畢竟不是企業,不太可能無上限一直增加
畢竟在台灣跟中華電信租用 IP 也不是太便宜的金額
好像沒有不用 IPv6 的理由

前置條件

還是要說一下一些前置條件

  • 有租用來自 ISP(在台灣通常是中華電信)的固定 IPv6 位址
  • 一台支持設定 IPv6 且能夠開啟 DHCPv6 的路由器/防火牆,本文是使用 OPNsense
  • 一台有網路功能的電腦,可以是 PC, Linux, MAC
OPNsense 固定制 IPv6

附圖是申請完,中華電信透過 Email 通知的信件的範例

OPNsense 固定制 IPv6 設定步驟

完成前置條件後,就可以開始設定
以下設定皆在 OPNsense 中完成
記得要先使用管理員帳號密碼登入

  1. System -> Gateways -> Single
    因為主要是上網用的 Gateway,Upstream Gateway 需要勾選
    Monitor IP 主要給 OPNsense 去驗證這個 Gateway 是否斷線
    我通常會輸入中華電信提供的 2001:B000:168::1
    也可以輸入 Google: 2001:4860:4860::8888 or Cloudfare: 2606:4700:4700::1111
OPNsense 固定制 IPv6
  1. Interfaces -> [WAN] (依據你的 Internet interface 可能有所不同)
    IPv6 Configuration Type 改成 Static IPv6
    並在 Static IPv6 configuration 中輸入 IP(中華電信提供的 WAN PORT IPv6)
    IPv6 Upstream Gateway 則選擇剛剛第一步中新建的 Gateway
    Use IPv4 connectivity 不需要勾選
OPNsense 固定制 IPv6

完成這兩步之後
回到 Lobby -> Dashboard
應該會看到 OPNsense 已經判定 Gateway 已經 Online

  1. 路由器可以透過 IPv6 上網後
    接下來就是要設定區域網路中的 IPv6
    意味著需要在 LAN 中開啟 DHCPv6
    如果你直接到 Services -> DHCPv6,將會發現任何 LAN 的 Interface 都不存在
    因為出現的前提是 LAN Interface 有一個內網的 IPv6
    所以先來到 Interface -> LAN
OPNsense 固定制 IPv6

同樣在 IPv6 中,改成 Static IPv6
但下方的 IPv6 Address 要輸入什麼呢?

  • 如果你沒有要切網段,那可以直接使用中華電信提供的 LAN Port IPv6,並在 :: 後方加入一個數字,通常是 1 or FFFF
    這就會是你在區網可以直接訪問 OPNsense 的 IP
  • 或者你可以使用這個工具,輸入 LAN Port IPv6,中華電信給的 subnet 是 56,可以再將它切小一點,我是切成 64
    切出來後任一組的其中一個 IP 都可以拿來作為 LAN 的 IP

因為是區域網路,在 Gateway 這邊,保持 Auto-detect

OPNsense 固定制 IPv6
  1. 完成後,就可以在 Services -> DHCPv6 中發現剛剛設定完 Static IPv6 的 Interface 出現了
    這個時候可以將剛剛切好的網段輸入到 from to
    記得要避開 LAN Interface 的 IP,以下圖來說
    就是避開 1,範圍是 2~200
OPNsense 固定制 IPv6
  1. 下面就是 IPv6 與 IPv4 最不相同的地方 Router Advertisements

全狀態位址自動配置(Stateful Address Auto-configuration):
在傳統的IPv4中,通常利用一種動態主機組態協定(Dynamic Host Configuration Protocol,DHCP) 來實現了自動配置網路主機的IP位址及相關組態設定(如:DNS伺服器、預設閘道器)。而IPv6可以 繼續延用此種自動配置的協定與服務,讓網路主機由DHCPv6伺服器自動取得128位元的IP位址和相關組態,此種讓主機可由伺服器取得介面位址和/或其它組態參數的自動定址方式稱為全狀態自動配置 ( Stateful Address Auto-configuration )。

無狀態位址自動配置(Stateless Address Auto-configuration):
SLAAC 是 IPv6 StateLess Address AutoConfiguration (無狀態位址自動設定) 的簡稱(RFC 2462、4862),所謂無狀態機制乃是指允許一部主機結合了本機可用資訊(介面識別碼)和從路由器公告取得的訊息(首碼)來產生自己的IP位址。換言之,當一部主機啟動IPv6時,送出多點傳送的路由器請求(Router Solicitation)、路由器回應以路由器公告(Router Advertisement)訊息來以讓主機從路由器得到首碼加上自己的介面識別碼,自動配置IPv6位址。

這邊引用自 https://www.lijyyh.com/2012/04/ipv6ipv6-auto-configuration.html

來到 Services -> Router Advertisements
因為我暫時沒有需要從 Router 這邊去管控發出去的 IP
這邊我選擇 Stateless
在細節一點可以查閱上面的文章

OPNsense 固定制 IPv6

至此,已經完成大部分設定
可以驗證一下設備端可不可以正常取得 IPv6
這邊我使用 macOS

$ifconfig
...
...
en12: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6467<RXCSUM,TXCSUM,VLAN_MTU,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 64:4b:f0:38:a5:23
	inet6 fe80::442:fea8:74d0:4c32%en12 prefixlen 64 secured scopeid 0x1f
	inet6 2001:xxxx:xxxx:801:853:d4f5:6fec:c914 prefixlen 64 autoconf secured
	inet6 2001:xxxx:xxxx:801:9901:c129:ab0f:a40f prefixlen 64 autoconf temporary
	inet 172.20.20.230 netmask 0xffffff00 broadcast 172.20.20.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (1000baseT <full-duplex,flow-control>)
	status: active
...

可以看到在 inet6 的部分有 2001 開頭的 IPv6,並且為 autoconf
接著來測試一下上網能力,來 ping google 吧

$ping6 2001:4860:4860::8888
PING6(56=40+8+8 bytes) 2001:b030:2049:801:9901:c129:ab0f:a40f --> 2001:4860:4860::8888
16 bytes from 2001:4860:4860::8888, icmp_seq=0 hlim=116 time=4.526 ms
16 bytes from 2001:4860:4860::8888, icmp_seq=1 hlim=116 time=3.394 ms
16 bytes from 2001:4860:4860::8888, icmp_seq=2 hlim=116 time=6.246 ms
16 bytes from 2001:4860:4860::8888, icmp_seq=3 hlim=116 time=3.401 ms
16 bytes from 2001:4860:4860::8888, icmp_seq=4 hlim=116 time=3.271 ms
16 bytes from 2001:4860:4860::8888, icmp_seq=5 hlim=116 time=3.606 ms
16 bytes from 2001:4860:4860::8888, icmp_seq=6 hlim=116 time=3.174 ms

通了!

防火牆設定

曾經我以為,既然有外網能力的 IPv6 都是 Public IP
這樣也太危險,不就常常被打爆
其實是我想錯了
如果是直接手動設定在設備端的固定 IPv6,確實就只有 OS 層的防火牆
但如果是透過 DHCPv6 取得的
那這個 IP 還是有受到防火牆保護,以本文來說就是 OPNsense
以下就來教學,如果是需要被訪問的,該如何開放

OPNsense 固定制 IPv6

以這個網站來說,IPv6 是 2001:b030:2049:800:20c:29ff:fe81:fed3/64
來到 Firewall -> Rules -> WAN 並且新增一筆
可以設定成以下

  • Action: Pass
  • Interface: WAN
  • Direction: in
  • TCP/IP Version: IPv6
  • Protocal: any
  • Destination: Single host or Network,並輸入 IP

到這邊之後,你就可以試試看從外部訪問,已經可以通了
https://[2001:b030:2049:800:20c:29ff:fe81:fed3]/

網域管理

如果一切順利
剛剛的 IPv6 網址是通的
那一定會再得到一個疑問,這麼長一串
比 IPv4 的網址還要更難輸入
這樣會不會太搞死人了

但別擔心,網域服務商其實也有提供 IPv6 的
以筆者使用的 Godaddy 來說,是可以新增一筆 AAAA Record 的
如下圖

OPNsense 固定制 IPv6

如果你的設備支持
那麼一樣可以反解出一組 IPv6

$ping6 blog.tocandraw.com
PING6(56=40+8+8 bytes) 2001:b030:2049:801:9901:c129:ab0f:a40f --> 2001:b030:2049:800:20c:29ff:fe81:fed3
16 bytes from 2001:b030:2049:800:20c:29ff:fe81:fed3, icmp_seq=0 hlim=63 time=0.380 ms
16 bytes from 2001:b030:2049:800:20c:29ff:fe81:fed3, icmp_seq=1 hlim=63 time=0.673 ms
16 bytes from 2001:b030:2049:800:20c:29ff:fe81:fed3, icmp_seq=2 hlim=63 time=0.596 ms
16 bytes from 2001:b030:2049:800:20c:29ff:fe81:fed3, icmp_seq=3 hlim=63 time=0.647 ms
16 bytes from 2001:b030:2049:800:20c:29ff:fe81:fed3, icmp_seq=4 hlim=63 time=0.683 ms
16 bytes from 2001:b030:2049:800:20c:29ff:fe81:fed3, icmp_seq=5 hlim=63 time=0.640 ms
16 bytes from 2001:b030:2049:800:20c:29ff:fe81:fed3, icmp_seq=6 hlim=63 time=0.613 ms

總結

這篇文章,沒有帶到深入的學問
再深入,我也沒辦法講得很透徹
主要還是記錄一下這個過程
因為一般使用者如果有一些篇專業的需求
又不想使用家用的路由器,購入商用的 CP 值也真的太低
相信 OPNsense, pfSense, OpwnWrt… 這類的使用者也不在少數
希望有幫助到根本篇一樣使用 OPNsense 的使用者


毛毛

可愛宅宅工程師、內容創作者
興趣是寫東東、寫東東跟寫東東。

Follow @Chindada Sponsor

在〈OPNsense 固定制 IPv6 教學〉中有 1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *