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