Centos

Firewalld 阻止 IPv6,忽略配置

  • January 6, 2019

我正在嘗試使用 NGINX 在 CentOS 7.2 上設置 IPv6 網路伺服器。我已經測試了我的 IPv6 連接傳出和傳入 - 一切正常。我的 IP、AAAA 記錄等也很好。在我啟用 FirewallD 之前,基本上一切正常。

我已將其設置為預設設置為帶有 eth0 介面的放置區。我啟用了 dhcpv6-client、http、https 和 ssh(ssh 在自定義埠上)。啟用防火牆後,任何 IPv6 流量都不能離開或進入機器。Traceroute6 到任何東西(甚至是網關)只到本地主機。如果我禁用防火牆,一切都很好。

我不知道為什麼會這樣。為了讓 FirewallD 將相同的 IPv4 配置應用於 IPv6 流量,我在網上找不到任何東西。我個人認為,它會自動執行此操作,因為它的所有命令都與 IP 協議無關。

任何幫助深表感謝。

我遇到了同樣的問題。通過firewalld放入的規則遵循邏輯後,我發現放置區正在阻止查找ipv6鄰居所需的ipv6 icmp。有一條規則允許所有 ipv6 icmp,但 firewalld 將其放在輸入區域之後,這是丟棄規則所在的位置。

如果您想親自查看,只需查看 ‘ip6tables -L -n -v’ 的輸出

所以,一個快速而骯髒的解決方法是這樣做:

firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p icmpv6 -j ACCEPT

Firewalld 將直接規則放在其他輸入規則之前,以便在刪除規則之前發生。如果您想阻止諸如 ping 之類的事情,您也可以使用直接規則,但您需要在上述規則之前使用它。

你會做這樣的事情:

firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p icmpv6 --icmpv6-type 128 -j DROP
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 1 -p icmpv6 -j ACCEPT

優先事項將使它們保持有序。

引用自:https://serverfault.com/questions/769374