web-dev-qa-db-ja.com

Ubuntuで他のマシンのポートをどのようにマップ/転送しますか? (localhost 555-> 192.168.0.21:555)

リモートIPに移植するUbuntuコンピューターに「仮想」リスニングポートを作成する方法はありますか?

つまり、このようなものです。

telnet 127.0.0.1 555と書くと、コンピューターに接続したい192.168.0.21ポート555(サーバーがある場所) )。

何か案が?

5
marc

iptables はあなたが探しているものであり、Ubuntuにすでにインストールされているはずです。

少し試行錯誤するかもしれませんが、以下のコマンドのようなものでうまくいくはずです。

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 555 -j DNAT --to 192.168.0.21:555
iptables -A INPUT -p tcp -m state --state NEW --dport 555 -i eth1 -j ACCEPT

これらのコマンドの機能の詳細については、 ここ を参照してください。

もう1つの方法は、Ubuntuでシナプスを介して利用できる rinetd というプログラムを使用することです。

リダイレクトTCPあるIPアドレスとポートから別のIPアドレスへの接続。rinetdは、ファイル/etc/rinetd.confで指定されたアドレス/ポートのペアへの接続をいくつでも処理するシングルプロセスサーバーです。 。

それを使用する方法についての素晴らしいガイドがあります ここ

4
John Rabotnik

http://www.frozentux.net/iptables-tutorial/chunkyhtml/x4033.html

このシナリオ全体の最後の側面を考慮しない限り、これで十分だと思います。ファイアウォール自体がHTTPサーバーにアクセスしようとすると、どこに行きますか?今のところ、残念ながら、$ HTTP_IPにあるサーバーではなく、独自のHTTPサーバーにアクセスしようとします。これを回避するには、OUTPUTチェーンにもDNATルールを追加する必要があります。上記の例に従うと、これは次のようになります。

iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT --to-destination $HTTP_IP
2
gogiel

Iptablesの代わりにredirを使用してください: http://manpages.ubuntu.com/manpages/lucid/man1/redir.1.html

1
Palesz