ルールを追加したhttps://example.com:9700
にもかかわらず、iptableルールがアクセスをブロックしている理由がわかりません。accept
まずすべてを片付ける
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X
次にすべてをドロップし、sshと9700ポートの例外を追加します
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 9700 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9700 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
サービスはクリア後に動作し、2 番目のルール セット後に動作を停止します。
SSHのルールは完全に正常に機能していることに注意してください。ルールを追加した後、SSH経由でサーバーに再接続できます。
DNSの問題
回答の 1 つによると、検証済み DNS は機能していません。ただし、IP アドレス経由でアクセスできない理由は説明されていません。https://xx.xxx.xx.x:9700
答え1
example.com の名前を解決できますか? いずれかのネーム サービスへのアクセスをブロックすると、マシンは example.com にアクセスできなくなります。/etc/hosts にホスト example.com とその IP アドレスを追加するか、DNS に iptables 例外を追加する必要があります。
投稿されたとおりここDNS ルックアップの例外は次のようになります。
iptables -A INPUT -p udp --source-port 53 -j ACCEPT
編集:
DNS の問題を無視したので、ルールを詳しく調べたところ、iptables の理解では、うまくいかないようです。宛先ポート 9700 (マシン上) で (マシンへの) INPUT トラフィックを許可し、ローカル ポート 9700 から (マシンから外部への) OUTPUT トラフィックを許可しています。
あなたが望んでいるのは、まさにその逆です (あるいは私が間違っているのでしょうか?): マシンがポート 9700 で外部サーバーにアクセスし、このサーバーが応答できるようにしたいのです。
したがって、最後の 2 つのルールは次のようになります。
iptables -A OUTPUT -p tcp -m tcp --dport 9700 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
これにより、コンピュータ上の任意のポートから始まるトラフィック (プロトコルが送信トラフィックに使用するポートを制御することはできないため) がポート 9700 上の他のマシンに送信されるようになり、パケットが既に確立されている接続の一部である場合は、世界中の他のマシンからコンピュータへのトラフィックも送信されるようになります。
答え2
試す:
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 9700 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 9700 -m state --state ESTABLISHED -j ACCEPT
example.com の IP アドレスを解決する DNS サーバーは同じマシンではないと想定しています。
また、OUTPUT チェーンのポリシーを ACCEPT に設定しても特に問題はないと思います。試してみてください。
この一連のルールは私にとっては有効です。あなたにも有効であるはずです。
よろしくお願いします!