サーバーでShorewallを単純なスタンドアロンファイアウォールとして使用していますが、Dockerも使用したいと考えています。
Dockerコンテナとそのポートリダイレクションドッカーを使用することにより、独自のiptablesルール/チェーンをセットアップします。これは、shorewallが再起動されると強制終了されます。そのため、コンテナは到達不能になります。
誰かが岸壁の再起動時にドッカールールを保存/復元できましたか?または別の回避策がありますか?
こちらもご覧ください:
サーバーでShorewallを単純なスタンドアロンファイアウォールとして使用していますが、Dockerも使用したいと考えています。
Dockerコンテナとそのポートリダイレクションドッカーを使用することにより、独自のiptablesルール/チェーンをセットアップします。これは、shorewallが再起動されると強制終了されます。そのため、コンテナは到達不能になります。
誰かが岸壁の再起動時にドッカールールを保存/復元できましたか?または別の回避策がありますか?
こちらもご覧ください:
回答:
次の構成変更により、DockerとShorewallホスト間のトラフィックフローが確保されます。Shorewall 4.5.21.9でテスト済みですが、最新バージョンに適用する必要があります。
/etc/shorewall/shorewall.conf
IP転送が有効になっていることを確認します(ほとんどの設定項目は「はい/いいえ」ですが、これは「オン」です)。
IP_FORWARDING=On
/ etc / shorewall / masq
プライベートDockerネットワークのマスカレーディング(NAT)を有効にします(別のネットワークを使用する場合、つまりでdockerを起動し--bip=#.#.#.#/#、それに応じて変更します)。eth0外部接続のあるホストマシン上の任意のインターフェイスに変更します。
#INTERFACE:DEST         SOURCE
eth0                    172.17.0.0/16
/ etc / shorewall / interfaces
インターフェイスエントリを追加して、dockゾーンがどのインターフェイスに関連するかをShorewallが把握できるようにします。
#ZONE           INTERFACE               OPTIONS
dock            docker0
/ etc / shorewall / zones
新しいゾーンを作成します。docker長すぎるため、「無効なゾーン名」エラーが発生することに注意してください。
#ZONE   INTERFACE
dock    ipv4
/ etc / shorewall / policy
おそらく、Dockerコンテナがホストマシンとインターネットと通信できるようにする必要があるため、これが出発点として適切です。
#SOURCE         DEST            POLICY
# ...(other policies)...
dock            all             ACCEPT
# ...(other policies, catch-all)...
また、同様の必要があるかもしれないACCEPTからのトラフィックのためのポリシーをfwするdockあなたは既にでそれを開かなかった場合は、fwへall。
必要に応じて、ポリシーまたはルールファイルでこれをさらに強化できます。たとえば、上記は外部トラフィックがDockerコンテナに到達することを明示的に許可しません。他のゾーン/ポリシー/ルールを確認してください。
/etc/shorewall/interfaces。新しいセクションをご覧ください。
                    Dockerにネットワーク分離機能が導入されたため、カスタムネットワークを使用する場合、ここで説明した他のソリューションでは不十分です。Shorewall 5.0.6では、Dockerネットワークを含むDockerのサポートが導入されています。この:
ちょうど私の箱でそれを考え出した。/etc/shorewall.confに以下が含まれていることを確認します。
IP_FORWARDING=Yes
Dockerは転送に依存しており、すべてのサーバーで「パペット」が「いいえ」に設定する間隔を空けています。
更新:おそらく、ドッカーからのトラフィックをWANインターフェイスにマスカレードする必要があります。
編集する/etc/shorewall/masqと、次のような行が必要になります。
br0         172.17.0.0/12
この場合、WANインターフェイスは実際にはbr0(ブリッジ)ですが、おそらくeth0のようなものになります。(ifconfigインターフェイスとそのIPアドレスを表示するために使用します)。私のマシンでは、DockerはRFC1918プライベートアドレス範囲である172.17.0.0/24を使用します。これは他のシステムでは異なる場合がありますが、ifconfigもう一度使用してインターフェイスを探すことで範囲を確認できますdocker0。
再起動のDOCKER前にチェーンを保存し、その後再びそれを復元する拡張スクリプトを作成することにより、Dockerルールセットがショアウォールの再起動に耐えることができます。これを行う方法の例を投稿しましたが、可能な唯一の方法とはほど遠いものと確信しています。
IP_FORWARDING=YesとIP_FORWARDING=True同様に動作します。私はいくつかの本番ルーターでそれを持っていますが、あなたの答えは私のものよりもはるかに明確です。すごい仕事。