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

업데이트: 또 다른 참고 사항으로, 실제로 규칙이 있는 경우 -P OUTPUT ACCEPT추가할 필요가 없습니다 (예: 해당 규칙을 추가할 수 있지만 결국 트래픽에서 그런 일이 발생하기 때문에 그럴 필요는 없습니다 ) . 어떤 규칙과도 일치하지 않습니다.)ACCEPTOUTPUTDROPACCEPTOUTPUT

관련 정보