次の iptables ルールがあります。
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s MY_IP_ADDRESS/32 -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -i lo -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -j DROP
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
ご覧のとおり、どこからでもサーバーにSSH経由でアクセスでき、ローカルIP(MY_IP_ADDRESS)とlocalhostからRedisデータベースにアクセスできます。
私のコンピュータ自体ではredis-cli -h xx.xx.xx.xx -p 6379
うまくいきます。しかし、サーバー自体ではredis-cli
。
次のiptablesルールを削除すると再び機能します。
-A INPUT -j DROP
localhostがRedisサーバーに接続できるようにするにはどうすればよいですか?
答え1
ポートごとにルールを追加できます。
-A INPUT -i lo -p tcp --dport some-port -j ACCEPT
-A INPUT -i lo -p tcp --dport another-port -j ACCEPT
または、localhostのすべてのトラフィックに共通のエントリを追加します。
-A INPUT -i lo -j ACCEPT
-A INPUT DROP
ちなみに、最後のルールをポリシーに設定すると削除できます。INPUT
DROP
-P INPUT DROP
更新:もう1つの注意事項として、実際にルールがある場合は-P OUTPUT ACCEPT
追加する必要はありません(たとえば、ルールを追加できますが、最終的にはトラフィックが発生するため必要ありません)。どのルールとも一致しません。)ACCEPT
OUTPUT
DROP
ACCEPT
OUTPUT