2つの異なるlxcコンテナのiptablesルール

2つの異なるlxcコンテナのiptablesルール

私はVPSシステムで2つのlxcコンテナを実行しており、iptablesの世界が初めてであるため、外部トラフィックをコンテナに転送するルールを作成しようとしています。最初の項目(192.168.1.2)はopenvpnサーバーを実行し、2番目の項目(192.168.1.4)はWebサーバーを実行します。これまでは、openvpn lxcのみを使用し、次のiptablesルールを使用してトラフィックを転送しています。

# Generated by iptables-save v1.4.21 on Fri Apr 28 16:07:58 2017
*filter :INPUT ACCEPT [1189211:150089991] :FORWARD ACCEPT [902865:826112449] :OUTPUT ACCEPT [1324099:212970374] COMMIT
# Completed on Fri Apr 28 16:07:58 2017
# Generated by iptables-save v1.4.21 on Fri Apr 28 16:07:58 2017
*nat :PREROUTING ACCEPT [36:1998] :INPUT ACCEPT [17:858] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0]
-A PREROUTING -p udp -m udp --dport 1194 -j DNAT --to-destination 192.168.1.2:1194
-A POSTROUTING -o eth0 -j MASQUERADE COMMIT
# Completed on Fri Apr 28 16:07:58 2017

これでWebサーバーを設定したいと思います。 httpトラフィックをWebサーバーコンテナに転送するためにこのiptablesルールを追加しました。

iptables -t nat -A PREROUTING -p tcp -m conntrack --ctstate NEW --dport 80 -j DNAT --to-destination 192.168.1.4:80

問題は、ポート80に転送するのがうまくいくようですが(nginxのスタートページにアクセスできます)、openvpnクライアントが適切なインターネット接続を持っていないことです(外部世界にpingを送信できるにもかかわらず)。つまり、サイトが非常に遅くロードされ、他のサイトはまったくロードされません(httpトラフィックがどこかで失われたようです)。上記のルールを削除すると、openvpnクライアント接続のすべてが期待どおりに機能しますが、httpサーバーは失われます。

PS:これが最終的なルールです。

# Generated by iptables-save v1.4.21 on Fri Apr 28 16:39:24 2017
*filter
:INPUT ACCEPT [1190228:150215153]
:FORWARD ACCEPT [902877:826113261]
:OUTPUT ACCEPT [1325229:213163664]
COMMIT
# Completed on Fri Apr 28 16:39:24 2017
# Generated by iptables-save v1.4.21 on Fri Apr 28 16:39:24 2017
*nat
:PREROUTING ACCEPT [1:44]
:INPUT ACCEPT [1:44]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p udp -m udp --dport 1194 -j DNAT --to-destination 192.168.1.2:1194
-A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcp --dport 80 -j DNAT --to-destination 192.168.1.4:80
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Apr 28 16:39:24 2017

また、転送ルールを最初に作成し、次に入力チェーンルールを作成します。

競合なしに両方のプロトコルを使用する方法はありますか?

ありがとうございます。

ベストアンサー1

おすすめ記事