iptablesはlocalhostがredisにアクセスするのを防ぎます。

iptablesはlocalhostがredisにアクセスするのを防ぎます。

次の 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ちなみに、最後のルールをポリシーに設定すると削除できます。INPUTDROP-P INPUT DROP

更新:もう1つの注意事項として、実際にルールがある場合は-P OUTPUT ACCEPT追加する必要はありません(たとえば、ルールを追加できますが、最終的にはトラフィックが発生するため必要ありません)。どのルールとも一致しません。)ACCEPTOUTPUTDROPACCEPTOUTPUT

関連情報