web-dev-qa-db-ja.com

FirewalldはIPv6をブロックし、設定を無視します

NGINXを使用してCentOS 7.2でIPv6 Webサーバーをセットアップしようとしています。 IPv6接続の送信と受信をテストしましたが、すべて動作します。私のIP、AAAAレコードなども同様に問題ありません。 FirewallDを有効にするまで、基本的にすべてが問題ありません。

Eth0インターフェースのドロップゾーンにデフォルトで設定されています。 dhcpv6-client、http、https、sshを有効にしました(sshはカスタムポート上にあります)。ファイアウォールが有効になっている場合、IPv6トラフィックはマシンを出入りできません。何でも(ゲートウェイを含む)へのTraceroute6はlocalhostにのみ行きます。ファイアウォールを無効にしても問題ありません。

なぜこれが起こっているのか私にはわかりません。 FirewallDに同じIPv4構成をIPv6トラフィックに適用させるために、オンラインで何も見つかりませんでした。個人的には、コマンドはすべてIPプロトコルに依存しないため、自動的に実行されると思いました。

どんな助けでも大歓迎です。

3
kgizdov

同じ問題に遭遇しました。 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

優先順位はそれらを順番に保ちます。

6
Mark

Vultr(IPv6は完全に機能します)とContabo(IPv6はfirewalldでは機能しません)のインスタンスをいじり回した後、Contaboのカスタムenable_ipv6スクリプトを実行した後でも、次のsysctlの違いが見つかりました。

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

/etc/sysctl.conf/etc/sysctl.d/usr/lib/sysctl.d/run/sysctl.d、または他の場所にはそのような設定はありませんが。ですから、それは奥深く、奇妙なハックであるに違いありません。

これは、クリーンインストールの後でさえ発生するため、ファイアウォールで保護された違いにはなり得ないため、ルールはまったくありません。すべてのゾーンを一覧表示しても、奇妙なことは何も表示されません。

とにかく、上記の3行を/etc/sysctl.d/10-ipv6.confに入れて(好きなように名前を付けて)、再起動すると、すべてが期待どおりに機能し始めました。

いいえ、IPv6がnet.ipv6.conf.all.disable_ipv6 = 1で機能し、firewalldがオフになっている理由を聞かないでください。これはまったく意味がありません。

0
bviktor