Ubuntu の iptables でポート転送を設定するにはどうすればいいですか?

Ubuntu の iptables でポート転送を設定するにはどうすればいいですか?

この引用文では、これを行う方法が説明されているはずですが、わかりません...

次に、すべての http リクエスト (ポート 80 に着信) を Squid サーバー ポート 3128 に転送するための次のルールを追加しました。

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128
iptables -t nat -A PREROUTING -i venet0:0 -p tcp --dport 80 -j REDIRECT --to-port 3128

これは動作するはずですが、動作しません。私のiptablesは空で、/etc/network/interface次のようになります。

auto lo
iface lo inet loopback
    address 127.0.0.1
    netmask 255.0.0.0
    broadcast 127.255.255.255
    up ip route replace 127.0.0.0/8 dev lo
# Auto generated venet0 interfaces
auto venet0
iface venet0 inet static
    address 127.0.0.1
    netmask 255.255.255.255
    broadcast 0.0.0.0
    up route add default dev venet0
iface venet0 inet6 static
    address ::2
    netmask 128
    up ip -6 r a default dev venet0
    up ip addr add {...externalIPv6...} dev venet0
auto venet0:0
iface venet0:0 inet static
    address {...externalIP...}
    netmask 255.255.255.255

答え1

まだ答えになっていないかもしれませんが、私はこれを答えとして始めます (うまくいけばまだです)。私がこれをする理由は、この問題を解決するには数回の繰り返しが必要になると信じているからです。

iptables ルールは問題ないように見えますが、/etc/network/interfaces ファイルにはいくつか問題があると思います。どこかからコピーしたのでしょうか、それともニーズに合わせて調整したのでしょうか?

私が見ている問題点:

  1. ループバック インターフェイスを指定するのはなぜですか? 通常、スタンザの最初の 2 行は問題ありません。
  2. 同じインターフェース venet0 に 2 つのアドレスを割り当てています。
  3. 最初の venet0 スタンザのネットマスクは制限が厳しすぎるため、ブロードキャスト アドレスと一致しません。
  4. venet0 の 2 番目のスタンザには、外部 IPv6 アドレスと ::2 の 2 つのアドレスが割り当てられています。
  5. venet0 のスタンザでは、ネットマスクの制限が厳しすぎます。
  6. まったく同じインターフェース、venet0/venet0:0 にループバック アドレスと外部アドレスの両方が割り当てられていますが、その意味は何でしょうか?

VMWare で何をしようとしているのかを教えていただけると助かります。今のところ、困惑しています。

関連情報