サーバーで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
同様に動作します。私はいくつかの本番ルーターでそれを持っていますが、あなたの答えは私のものよりもはるかに明確です。すごい仕事。