私の質問:特定のポートで接続を受け入れるためにカスタムiptablesルールを追加するにはどうすればよいですか?
サーバーでポート3500を開こうとしましたが、失敗しました。私はこのコマンドを使用して開始しました:(From http://wiki.centos.org/HowTos/Network/IPTables )
iptables -A INPUT -p tcp --dport 3500 -j ACCEPT
しかし、次にiptables -L
を実行します。まだ新しいルールがリストされていません:(出力に3500が含まれているはずです)
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:rtmp-port
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns
ACCEPT udp -- anywhere anywhere udp dpt:ipp
ACCEPT tcp -- anywhere anywhere tcp dpt:ipp
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere state NEW udp dpt:snmp
ACCEPT udp -- anywhere anywhere state NEW udp dpt:snmptrap
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftp
REJECT all -- anywhere anywhere reject-with icmp-Host-prohibited
Editそこで、ACCEPTルールをINPUTチェーンに挿入しようとすると、iptablesは次のようになります。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3500
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
ただし、外部から3500に接続することはできません。 (私はまだ内側からtelnetできます)。 my_Host 3500にTelnetで接続しようとすると、次のようになります。telnet: Unable to connect to remote Host: Connection refused
編集2:私のnetstat -an | grep "LISTEN "
出力:
tcp 0 0 127.0.0.1:3500 0.0.0.0:*聞く
tcp 0 0 0.0.0.0:973 0.0.0.0:*聞く
tcp 0 0 0.0.0.0:111 0.0.0.0:*聞く
tcp 0 0 127.0.0.1:631 0.0.0.0:*聞く
tcp 0 0 127.0.0.1:25 0.0.0.0:*聞く
tcp 0 0 ::: 22 ::: *聞く
編集3:私はlainのアドバイスに従い、サービスを127.0.0.1:3500ではなく0.0.0.0:3500にバインドしました。
ルールがリストされています。rtmp-port
はIANAによるとポート3500です ポート/サービス 名前。サービス名ではなくポート番号のリストを取得するには、-n
スイッチを使用します
iptables -L -n
また、-Aスイッチを使用して、ルールをINPUTチェーンに追加しました。これは、パケットがRH-Firewall-1-INPUTチェーンに送信された後に追加されました。最後のルールはブランケットREJECTであるため、ポート3500宛てのパケットはINPUTチェーンでテストされる前に拒否されます。
考えられる解決策がいくつかあります。-I
スイッチを使用して、ルールをINPUT
チェーンまたはRH-Firewall-1-INPUT
チェーンに挿入します。
iptables -I INPUT -p tcp --dport 3500 -j ACCEPT
または
iptables -I RH-Firewall-1-INPUT -p tcp --dport 3500 -j ACCEPT
あなたはおそらくあなたのルールもきれいにするべきです、あなたは使うことができます
iptables -D INPUT -p tcp --dport 3500 -j ACCEPT
(数回)新しいルールを追加する前に、ポート3500の既存のルールを削除します。