iptables経由の発信接続を許可するにはどうすればよいですか?


17

2台のサーバーがあります。最初のプログラムは、ポート2194で2番目のプログラムと通信する必要があります。

私はそれが機能していないことを知っています、なぜなら私がするとき:

root@server1 [~]# telnet myserver2.com 2194
Trying 123.123.123.98...
telnet: connect to address 123.123.123.98: Connection timed out
telnet: Unable to connect to remote host: Connection timed out

server1# iptables -L -n

Chain INPUT (policy DROP)
...
...

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
...

Chain LOCALINPUT (1 references)
target     prot opt source               destination
...

Chain LOCALOUTPUT (1 references)
target     prot opt source               destination
...

Chain LOGDROPIN (1 references)
target     prot opt source               destination
DROP       all  --  0.0.0.0/0            0.0.0.0/0

Chain LOGDROPOUT (1 references)
target     prot opt source               destination
DROP       all  --  0.0.0.0/0            0.0.0.0/0

しかし、server1でtelnet localhost 2194を実行すると動作しますか?server1からのtelnet server1spublicip 2194はどうですか?
ジェランジョーンズ

server2のtelnet localhost 2194が機能します。server2のtelnet server2ipaddress 2194も同様に機能します。
Siliconpi

1
conあなたがやる:両方のサーバーでiptables -L -nを実行し、次のものよりも多い場合は教えてください(私はあなたのルールなどを見たくありません;-))Chain INPUT(policy ACCEPT)target prot opt source destination Chain FORWARD(ポリシーACCEPT)ターゲットprot optソース宛先チェーン出力(ポリシーACCEPT)ターゲットprot optソース宛先
Geraint Jones

こんにちは!編集してください...
Siliconpi

回答:


21

TCPポート2194でserver1からserver2への発信接続を許可するには、server1でこれを使用します。

iptables -A OUTPUT -p tcp -d <server2ip> --dport 2194 -j ACCEPT

TCPポート2194でserver1からserver2への着信接続を許可するには、server2でこれを使用します。

iptables -A INPUT -p tcp -s <server1ip> --dport 2194 -j ACCEPT

がらくた-最初にやったが、うまくいかなかった。2番目の操作も行いましたが、うまくいきませんでした。設定が非常に制限されている可能性があります。以前の編集を参照してください
Siliconpi

1
「-A」の代わりに「-I」を使用してみてください。これにより、新しいルールは、すでに設定されている他のすべてのルールよりも優先されます。
マッシモ

アプリケーションが実際にIPアドレスではなくドメイン名を直接使用する場合、何か別のことをすべきですか?
Siliconpi

すごい迫力... ...ちょうど最初の文を実行して、プロンプトからのtelnetにできています
siliconpi

3
それをLとして読むかもしれない人々のための「i」のようなマイナスI
Siliconpi

6

ほんのいくつかのポインター

実行しているサービスはローカルホストのみでリッスンしていますか?走る

netstat -ltn

そのような行が表示された0.0.0.0:2194場合、大丈夫です。表示されている場合は127.0.0.1:2194、ローカル接続でのみリッスンしています(または:::2194::1:2194それぞれIPv6アドレスをtcp6線で表示)。

現在のiptablesルールは何ですか?

iptables -L

ポリシーはDROP / REJECTですか(そうでない場合は、すべてのチェーンに対して)?必要なポートに特定のルールはありますか?

ファイアウォールの問題である場合、問題のあるルールを変更するか、次のようなルールを追加します。

iptables -A INPUT -p tcp --dport 2194 -j ACCEPT 

トリックを行う必要があります(テストなし)

===編集===

ネットワークの問題をテストするには、優れたツールが必要tcpdumpです。接続してパケットの送信先を確認しながら、両方のサーバーで実行します。たとえば、サーバー1で次を実行します。

tcpdump -i eth0 -n host server2.com

サーバー2で次を実行します。

tcpdump -i eth0 -n host server1.com

その後、接続してみてください。送信元および宛先からの画面にダンプされたすべてのTCPパケットが表示されるはずです。この情報を使用して、問題の場所を正確に特定できるはずです。


こんにちはダン- ...私はserver2のが問題(私は私の自宅のPCを使用して接続することができるよ)接続を受け入れるを持っていると思ういけないが、私はサーバー1が発信接続を許可するdoesntのだと思う
siliconpi

iptables -A出力-p tcp --dport 2194 -j ACCEPT
Geraint Jones

c10kこんにちは、そのdidntの仕事...そして、どちらかのtelnet didntの仕事にtryign
siliconpi

他のいくつかのアイデアを追加
ダンアンドレアッタ

こんにちは、ここで2194は私のポート番号またはターゲットIPポート番号ですか?
トミー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.