docker、iptables、wireguard:どのような方法を選ぶべきですか?

docker、iptables、wireguard:どのような方法を選ぶべきですか?

助けてくれてありがとう前のスレッド、特定の問題を見つけたが、根本的な問題を解決する方法がわからない。

この問題をまとめると:私のサーバーのDockerが何らかの方法でiptableを壊しているようです。このバグ/機能が記録されました。ここそしてそこ。これは、そのサーバーのWireguardインスタンスがサーバーと同じローカルネットワーク上にあるときに機能しないことを示しています。次の理由で範囲を絞ることができました。

  • 問題なく、同じネットワークに同じ構成(ドッカーを除く)を持つ2つの異なるサーバーがあります。
  • そのサーバーでドッカーを無効にすると問題がなくなりました。

これは、問題は/etc/wireguard/wg0.confiptablesが設定されていないことに帰結することを意味します。

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

/var/lib/docker/フォルダを別のドライブに移動した後に問題が発生しました。そのために、私は次のことをしました。

  • 編集/usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock次に変更されましたExecStart=/usr/bin/dockerd --data-root [New folder] -H fd:// --containerd=/run/containerd/containerd.sock
  • シンボリックリンクを作成しました。ln -s [New folder] /var/lib/docker

直感的に見たとき私の問題を解決するための2つのオプション:

  1. 上記の2つのリンクの回避策の1つを使用してください。正直言って、私はこれらの説明のいくつかを完全に理解したかどうかわかりません。また、この方法で変数を追加できるかどうかわからないため、提案された解決策(に追加)のいずれかが機能するかどうかはわかりませExecStartPost=/usr/lib/systemd/system/docker.service%i
  2. /var/lib/docker移動中のアイテムを配置するのではなく、説明できる他の方法を見つけてください/usr/lib/systemd/system/docker.service

誰でもそうだったこれに提案がありますか?私は何を逃したことがありませんか?

ありがとうございます!

ベストアンサー1

オペレーティングシステムで既存のユニットファイルを変更するには、[1]を使用するのが最善ですsudo systemctl edit whatever.service。ソースファイルを編集すると、パッケージの更新が中断されます。

しかし、シンボリックリンクを作成した場合は、なぜユニットファイルを変更するのですか?

古いデータディレクトリの内容を新しいディレクトリにコピーしてみてください。何か抜けた場合。

私のサーバーでは、残りの配備構成とうまく機能するようにパッチを適用できるため、docker.ioまたは他の外部インストールではなく、配布からソフトウェアをインストールすることをお勧めします。私が選んだディストリビューションはpodman私にとってはかなりうまくいきます。 .dockerdocker

[1]https://www.2daygeek.com/linux-modifying-existing-systemd-unit-file/

おすすめ記事