在 Fortinet 設備上使用 NAT66 (IPv6-to-IPv6 NAT)

很可能正是我的這一個要求,打破了系上網路的寧靜。智能所網段 (IAIS) 於星期二 (9/30 起) 開始提供 IPv6 服務 。這下連系務管理人員可能也不喜歡我了也說不定... (畢竟要熟悉一種新的,還不是簡單的能用數字表達的 IP,每次寫也要寫得又臭又長...)。

雖然寫了文章也講了 「IPv6 不應該這樣分配」... 也無法改變陽交大資訊人員的想法... (可能跟還沒有 Train 足夠多的人有關 ?)

反正教授們都很聰明,都會知道怎麼解決問題,故我正是用 NAT66 去解決自己的實驗室私有網路的 IPv6 問題。(不太懂為什麼要這麼做的請看前一篇文章)


誰能支援 NAT66:

選 Fortinet 純粹只是碰巧我有這台機器,但不可否認的是 Fortinet 也是我在眾多的網路產品之中,感覺 NAT 功能做的最為全面,支援幅度最大的一個廠商,不僅僅是傳統的 NAT44 與今天要介紹的 NAT66,甚至過度用的 NAT64 與 NAT46,Fortinet 在 FortiOS 6.x 就有支援了。

我的實驗室裡的 FortiWiFi 50E 2R (802.11ac 版)

然而,我知道很多人未必對 Fortinet 清楚,所以我也把 「我知道而且用過」 可以支援 NAT66 (一個 Public IPv6 對一個 Private IPv6 Network) 的設備列舉一下 (除了 Fortinet 以外,因為任何跑 FortiOS 6.2 或更新的設備都可以用)
  • Cisco ASA 系列防火牆 (執行 9.2 版以後或更新的機器)
  • CheckPoints 系列防火牆 (執行 R76 或更新的版本)
  • Dell SonicWall 系列防火牆
  • H3C SecPath 防火牆
  • Huawei 電信級路由器 (Service Router) 與 HiSecEngine 防火牆且必須購買 NAT66 授權
  • Juniper Junos 路由器與 SRX 防火牆
  • Mikrotik 路由器 (任何執行 RouterOS v6 或更新的基本上都可以)
  • OpenWRT 路由軟體
  • OPNSense 路由防火牆軟體
  • pfSense 路由防火牆軟體 (2.8.0 之後)
  • VyOS 路由防火牆軟體 (1.5 之後)
  • 任何執行 Linux 有 nftable 支援的機器
以下設備支援的是 NATv6 DIA (或稱為 NPTv6),仍然必須擁有外部對應網段(即內網若有一段64,外網就必須有相對應的 64,這是作為 Failover 跟 Load-Balancing 用的),不應做為 NAT66 設備使用
  • Cisco 路由器 (執行 IOS 16 以後或更新的版本,含 XE)
所以這就是為什麼我會在前面特別提到 NAT66 支援的設備非常非常的少,是少到誇張的地步。我想也不會有人特定為了在交大自己實驗室網路裡面可以有 IPv6 所以特地去買這些東西吧 ? (別忘了,這些設備動輒都是數萬起跳的,就算是現在最便宜的 Fortinet 30G (不含資安功能授權) 也要 8000 多台幣。

交大教師 (光復校區) 最佳解套,那些汰換的二手設備

如果願意仔細花時間找露天或蝦皮,其實非常多以上產品的拋售,有些甚至有內建 WiFi 功能,剛好頂一台 AP,而且通常價格非常低廉,效能也經常比全新的家用款來的更好,功能更多:

隨便找的一台

唯一的缺點是有很大的機會沒有辦法報業務費或設備費因為通常這些賣場無法開發票,而且壞掉要自己花時間 Debug。
但看在花費通常不會超過兩千的情況下,就看個人願意為 IPv6 犧牲多少... 對我而言,我需要 IPv6 子網做實驗,那當然一定花下去。

如果你跟我一樣是 Fortinet 的愛用戶,設定 IPv6 NAT 請看這裡

要在 Fortinet 上設定 IPv6 NAT並不難,思路很直覺
  • 1. 設定 WAN IPv6
  • 1.1 設定靜態 IPv6 路由 (如果你的 IPv6 是手動設定的時候)
  • 2. 設定 LAN IPv6
  • 3. 設定 IPv6 DNS
  • 4. 設定 IPv6 NAT
沒了,就這樣。

1. 設定 WAN IPv6

點 「網路」 -> 「介面」-> 「wan1 (看你的 WAN 是哪個介面)」,按右鍵編輯
找到 IPv6 位址/Prefix 輸入你的 IPv6 位置 (備註: 交大的 IPv6 是人工配發手動設定,系辦會給)

如果您的學校是使用 DHCPv6,則請選擇 DHCPv6,如果使用 SLAAC (無狀態自動定址),請看以下,點右上角的「命令」介面,並輸入以下:

  • config system interface (設定系統介面)
  • edit wan1 (編輯 wan1 設定,這裡請注意你的 wan 到底是哪一個)
  • config ipv6 (設定 IPv6)
  • set autoconf enable (啟用自動設定)
結束時請記得打 end,不然設定不會儲存

1.1 設定 IPv6 靜態路由 (只有當你的 IPv6 的設定方式是手動時)

點 「網路」 -> 「靜態路由」-> 「新增 IPv6 靜態路由」

  • 目的 ::/0 (代表所有流量的意思)
  • 閘道器位置: 請輸入網管人員給你的閘道器位置
  • 介面: 選擇你的 WAN 介面
其他的可以不用改

2. 設定 LAN IPv6

點 「網路」 -> 「介面」-> 「lan (有些會是 internal,如果你有自己建立 VLAN 或其他,請以此類推)」,按右鍵編輯

  • IPv6 Addressing Mode : Manual (請務必設定為 Manual,因為對你的內網來說,你必須要固定路由器位置,讓其他設備找到你
  • IPv6 位置/Prefix : 請輸入任何一段「不能公開路由的 IPv6 網段」,例如 2001:db8, 3fff: (書寫用位置), fc00-fdff: (ULA 位置)
重要提醒: 不要隨便使用沒有公開分配的 IPv6 網段,雖然短期一定沒問題,但長期仍然會有問題,包含位置覆蓋等等...

接著我們必須設定 IPv6 內網的位址發放,此處僅介紹 SLAAC 無狀態發放。雖然這會導致 IP 發放遺失一些管理性,但是:
  • 並非所有設備都支援 DHCPv6 取得位置 (所有的 Android 裝置,IoT 設備)
  • SLAAC 設定簡易,隨插即用
然而如果您的內網小於 /64 時,則必須使用 DHCPv6,因為 SLAAC 會失效。
設定 LAN SLAAC 自動定址在 FortiOS 7 以前必須使用 CLI 來達成,但設定也不困難:

  • config system interface
  • edit internal (請注意你的 lan 是哪一個,不清楚可以輸入 show)
  • config ipv6 (設定 IPv6)
  • set ip6-allowaccess ping (允許 IPv6 Ping,此步驟很重要,IPv6 十分依賴 ICMP)
  • set ip6-send-adv enable (啟用 IPv6 Router Advertisement 廣播)
  • set ip6-prefix-list (設定 IPv6 子網清單)
  • edit fd00:64::/64 (編輯子網,請輸入你自己設定的子網,例如我的路由器位置為 fd00:64::ffff/64,那子網就是 fd00:64::/64)
  • set rdnss fd00:64::ffff (設定網路內的電腦的 DNS 伺服器為 fd00:64::ffff,可以改為自己喜歡的 DNS 位置,而我一般會讓 Fortigate 自己做 DNS Relay)
記得使用 end 讓設定生效

3. 設定 IPv6 DNS

此處也十分直覺... 點選「網路」 -> 「DNS 伺服器」,輸入 ISP 或 MIS 給你的 DNS 設定,如果在 WAN 使用 DHCPv6 或是 SLAAC,那通常這裡可以不需要設定 (因為會自動帶入)


4. 設定 IPv6 NAT 政策

點選「政策 & 物件」 -> 「IPv6 政策」-> 新增 IPv6 政策

  • 名稱: (請填寫你看得懂的,知道這個政策是做什麼的名稱)
  • 進入介面: (你的 lan)
  • 離開介面: (你的 wan)
  • 來源: all
  • 目的: all
  • 服務: ALL
  • 啟用 NAT: YES (這一步最重要,沒弄好都不會動)

完成

基本上設定到這一步,IPv6 NAT 已經完成了:



待續...
Wayne 10 月 1 日

留言

熱門文章