8

ポートを lxc-container からループバックにリダイレクトしようとしています。

私の lxc-container は lxcbr1 ブリッジ 11.0.3.1 で構成されています。

ホストから lxc へ、および lxc からホストへ netcat で接続しようとしています。成功。

ローカルホスト:

# nc -l 1088

lxc:

# nc 11.0.3.1 1088
Hello!

そして localhost メッセージを参照してください: "Hello!". 成功!

ポートをそのようにリダイレクトすると:

# iptables -t nat -A PREROUTING -i lxcbr1 -p tcp -d 11.0.3.1 --dport 1088  -j DNAT --to-destination 127.0.0.1:1088
# nc -l 127.0.0.1 1088

その後、lxc-container から接続を試みます:

# nc 11.0.3.1 1088
Hello !

しかし、localhost にはこのメッセージが表示されません。

どこが間違っていますか?

私はこの答えを見つけました: https://serverfault.com/questions/211536/iptables-port-redirect-not-working-for-localhost

ループバックが PREROUTING を使用しないという健全な言葉があります。私は何をすべきか?

4

2 に答える 2

5

ループバック トラフィックの DNAT は使用できません。

似たような質問をたくさん見つけました。123など...

RFC 5735 によると、ネットワーク 127.0.0.0/8 はホスト自体の外にルーティングされるべきではありません。

127.0.0.0/8 - このブロックは、インターネット ホスト ループバック アドレスとして使用するために割り当てられます。上位レベルのプロトコルによってこのブロック内の任意のアドレスに送信されたデータグラムは、ホスト内でループ バックします。これは通常、ループバックに 127.0.0.1/32 のみを使用して実装されます。[RFC1122] のセクション 3.2.1.3 で説明されているように、127.0.0.0/8 ブロック全体内のアドレスは、どこのネットワークにも合法的に表示されません。

RFC 1700の 5 ページ、「ホストの外に出てはならない」。

出口の 1 つがあります: use inetd

多くのintedサーバー、xinetdなどがあります。

私の選択は rinetd でした。

このマニュアルを使用しますhttp://www.howtoforge.com/port-forwarding-with-rinetd-on-debian-etch

私の設定は次のようになります:

$ cat /etc/rinetd.conf 
# bindadress    bindport  connectaddress  connectport
11.0.3.1        1081            127.0.0.1       1081
11.0.3.1        1088            127.0.0.1       1088

rinetd を再起動します。

$ /etc/init.d/rinetd restart
Stopping internet redirection server: rinetd.
Starting internet redirection server: rinetd.

そして、リダイレクトは魅力のように機能します。

この質問を自分で閉じることはしません。そのようなタスクのよりエレガントなソリューションをまだ探しているからです。動物、netcat、inetd でこれを行う可能性は低く、問題ではありません。これは私の意見。

于 2013-09-02T23:17:20.760 に答える