Iptables
如何在沒有靜態分配的情況下使用 iptables 設置 IPv6 DMZ?
我在康卡斯特的住宅網路上有幾個網路。我需要通過其中一台主機上的 SSH 代理從各種環境訪問這些網路。
(碰巧我正在使用 OpenWRT,所以一個特定的解決方案會有幫助;但我通常也很好奇如何使用任何基於 Linux 或 BSD 的邊緣路由解決方案來做到這一點。)
使用 IPv4,這相對簡單:因為我所有的內部 IP 都分配有 DHCP,所以我可以簡單地設置一個轉發規則,將外部介面上的埠 22 移動到特定 IP 上的埠 22。
由於我的 IPv6 地址都是使用 SLAAC 分配的,因此我沒有可以在 ip6tables-land 中使用的靜態地址來轉發內容。
如何檢測前綴分配的變化,以便建立新的 iptables 規則?或者有沒有辦法設置一個規則,根據從它的 MAC 地址或類似的東西發現它的 IP 地址來轉發到一個特定的主機?(這些主機都在一個網段上,因此多播等應該可以工作。)
我認為在您的情況下,您可以使用動態前綴轉發,我的規則範例如下
/etc/config/firewall
:config rule option name 'HTTP-SSH-IPv6-myserver01' option src 'wan' option proto 'tcp' option dest 'lan' option dest_ip '::2c18:81a2:3422:f690/-64' option dest_port '22 80 443' option family 'ipv6' option target 'ACCEPT'
它創建這樣的 iptables 規則:
-A zone_wan_forward -d ::2c18:81a2:3422:f690/::ffff:ffff:ffff:ffff -p tcp -m tcp --dport 80 -m comment --comment "!fw3: HTTP-IPv6-myserver01" -j zone_lan_dest_ACCEPT
這裡也描述了相同的情況:Dynamic IPv6 Subnet & ip6tables。
所以它比 IPv4 更容易——您不需要在 DHCP 伺服器上配置靜態 IP 地址。
PS:標題中的“DMZ”在第一次閱讀問題時讓我感到困惑。