web-dev-qa-db-ja.com

Linuxの下であるインターフェースから別のインターフェースに接続を転送する方法

私は、eth0、eth1の2つのネットワークインターフェイスを持つLinuxボックスを持っています。 eth1から、たとえばポート8080で、内部Webサイトにアクセスできます。ボックスの外側からは、そのネットワークにアクセスできません。私の質問は、ボックスの外側から何かを設定する方法はありますか?ポート8080で実行されているWebサーバーがあるように見え、それに接続すると、自動的に内部サイトのeht1に転送されますか? IP転送を有効にして静的ルートを追加しようとしましたが、機能しません。ありがとう。

3
Daniel

このボックスはそれらのインターフェース間のトラフィックをルーティングしていますか?あなたが書いたことから、eth0にはインターネットに接続されたパブリックネットワークがあり、eth1にはプライベートローカルネットワークがあると思います。

それが設定であり、インターネットからローカルネットワーク上のWebサーバーにアクセスする場合は、ネットワークアドレス変換(NAT)を使用する必要があります。

基本的に、「外部」インターフェースで外部IPアドレスを把握し、iptablesルールを追加する必要があります。

iptables -t nat -A PREROUTING -p tcp -d X.X.X.X --dport 8080 -j DNAT --to Y.Y.Y.Y:8080

X.X.X.Xは外部アドレスで、Y.Y.Y.YはWebサーバーを実行している内部アドレスです。そのシナリオでは、フォワードチェーンのトラフィックを許可していることも確認する必要があります。

iptables -A FORWARD -p tcp -d Y.Y.Y.Y --dport 8080 -j ACCEPT

このためには、ボックスで転送を有効にする必要があります。

sysctl net.ipv4.ip_forward=1 

または

echo 1 > /proc/sys/net/ipv4/ip_forward

それがあなたの質問に答えるかどうかはわかりませんが、あなたの質問にはほとんど詳細がありませんでした。

5
mdrozdziel