
CentOS 6.2 で新しい Web サーバーをセットアップしていますが、Web 経由で接続できません。すべてが正しくセットアップされておりhttpd.conf
、Apache も実行されているように見えるので、iptables の問題であると思われます。
以下に問題の原因となる可能性のあるものはありますか?
編集: iptables を停止すると正常に接続できるので、以下の部分で調整する必要があるはずです。すでにiptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables を実行して保存し、再起動しましたが、違いはありませんでした。
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
以下の回答のアドバイスに従ってください:
[root@staging ~]# iptables -N TCP
[root@staging ~]# iptables -A TCP -p tcp --dport 80 -j ACCEPT
[root@staging ~]# iptables-save > /etc/iptables/iptables.rules
-bash: /etc/iptables/iptables.rules: No such file or directory
[root@staging ~]# iptables-save
# Generated by iptables-save v1.4.7 on Thu Nov 8 14:09:09 2012
*filter
:INPUT ACCEPT [91:7480]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [70:6556]
:TCP - [0:0]
-A TCP -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
# Completed on Thu Nov 8 14:09:09 2012
[root@staging ~]# iptables-restore
^C
[root@staging ~]# service iptables start
iptables: Applying firewall rules: [ OK ]
さらに編集: iptables を停止した後に iptables-save を実行したため、何も表示されませんでした。出力は次のとおりです。
# iptables-save
# Generated by iptables-save v1.4.7 on Thu Nov 8 14:39:10 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [28:3344]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Nov 8 14:39:10 2012
答え1
出力iptables-save
には、ルール 3 に関する次の追加情報が表示されますが、これは表示されませんiptables -L
。
出力からiptables -L
考えると全てトラフィックが受け入れられます:
ACCEPT all -- anywhere anywhere
ただし、iptables-save
次のようになります:
-A INPUT -i lo -j ACCEPT
つまり、 はiptables
実際にすべてのトラフィックを受け入れますが、ループバック インターフェイス ( ) からのみ受け入れますlo
。
これが、HTTP トラフィックが Web サーバーに到達しない理由です。許可されるトラフィックは、ルール 1 で確立された接続、ping
ルール 2 では ICMP (例 )、-A INPUT -p icmp -j ACCEPT
ルール 4 では SSH のみです-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
。
すると、ルール 5 ですべてが拒否されます-A INPUT -j REJECT --reject-with icmp-host-prohibited
。
つまり、ルール 6 に到達する前にすべての HTTP トラフィックが拒否されます。-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
なおすルール6(-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
)を削除します。
iptables -D INPUT 6
そしてそれを(オプション-I
)ルール5として挿入します:
iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT
またはこれをインポートします:
# Generated by iptables-save v1.4.6 on Thu Nov 8 16:46:28 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [40:5423]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Nov 8 16:46:28 2012
ファイルに保存して実行しますiptables-restore < file
。
編集: OP は、再起動後に新しいルールが失われることに気付きましたiptables
。
ここで説明されているように:http://wiki.centos.org/HowTos/Network/IPTablesルールを更新するたびに保存する必要があるので、次のコマンドを実行します。
# /sbin/service iptables save
変更を永続的にするには、 を使用します。これで、変更されたルールが によって読み込まれるようになりますiptables
。
答え2
私は iptables の達人ではありませんが、私の設定ではポートを開くために別のカスタム チェーンを使用しました。
iptables -N TCP
iptables -A TCP -p tcp --dport 80 -j ACCEPT
必ず保存してください
iptables-save > /etc/iptables/iptables.rules
ロードするには
iptables-restore < /etc/iptables/iptables.rules
^^ デーモンがロードしない場合は、上記の方法をすでに実行したとおっしゃっています (INPUT チェーンのみで、これは重要ではないと思います)。したがって、保存と再ロードが正しく行われていない可能性があります。iptables デーモンは正しく実行されていますか? 上記のコマンドを実行し、iptables -L を使用した後、新しく追加されたチェーンとルールが表示されることを確認してください。
さらにトラブルが発生した場合の対応として、iptables-save > location_of_rules CentOS 上の場所がわかりません。ただし、iptables -L を使用して新しいチェーンがそこにあるかどうかを確認してください。
また、Web サイトにアクセスできないことを確認することをお勧めします。これを行うには、(コンピューター上の) Web ブラウザーで URL http: //127.0.0.1/ を入力します (: と // の間のスペースは不要)。Web サイトにアクセスできる場合は、ルーターに問題があります。ファイアウォールでポートを開くには、ポート転送を行う必要があります。http://en.wikipedia.org/wiki/ポート転送