ip6tables를 사용할 때 잠시 후 IPv6 호스트에 대한 연결이 끊어지는 이유는 무엇입니까?

ip6tables를 사용할 때 잠시 후 IPv6 호스트에 대한 연결이 끊어지는 이유는 무엇입니까?

노력하고 있어요 ip6tables(버전1.6.0) Debian 9 AMI를 사용하는 EC2 인스턴스에서 잠시 후 IPv6 주소의 서버에 대한 연결이 끊어졌지만 여전히 IPv4 주소의 서버에 연결할 수 있다는 것을 알았습니다. 물론 보안 그룹을 허용하도록 설정했습니다. ICMP를 포함한 모든 트래픽 IPv4 및 IPv6.

체인의 기본 정책을 특정 포트 또는 IP 주소와 모든 ICMP 트래픽을 허용 INPUT하도록 설정 DROP하고 AWS 외부의 다른 호스트(Linode 및 DigitalOcean)에서 서버에 ping을 시도했지만 잠시 후 모든 패킷이 EC2 인스턴스에 도달하는 것을 중단했습니다. 나는 또한 포트에서 3개의 nginx 서비스를 실행하고 있습니다.80,8080그리고5555, 포트8080그리고5555nginx Docker 컨테이너의 게시된 포트이지만 동일한 문제가 있는 모든 포트에 대해 GET 요청을 하려고 하기 때문에 중요하지 않습니다.

이상한 점은 패킷 수를 보고 있는데 연결이 끊어졌을 때 삭제된 패킷 수가 증가하지 않는다는 것입니다 ip6tables -L -xvn.

Chain INPUT (policy DROP 21 packets, 2748 bytes)

ACCEPT그런데 기본 정책을 ( ) 로 변경하니 ip6tables -P INPUT ACCEPT다시 작동이 되더군요. 우연인지는 모르겠습니다.

또한 nat패킷 수에 대한 감시 테이블을 사용하고 watch -n 1 ip6tables -t nat -L -xvn있으며 모든 것이 잘되면 체인의 패킷 수가 증가합니다. 한 가지 주목할 점은 이 문제가 발생하면 체인의 패킷 수가 증가하는 PREROUTING것을 볼 수 있다는 것입니다. 테이블이 증가하지 않고 테이블에 설정된 규칙이 없습니다.INPUTPREROUTINGnatINPUTnatnat

Chain PREROUTING (policy ACCEPT 396 packets, 35498 bytes)

또한 전혀 사용하지 않는 Docker를 설치하고 ip6tablesDocker 컨테이너를 중지하고 Docker 데몬을 비활성화하고 iptablesDocker에서 설정한 규칙을 새로 고치려고 시도했지만 운이 좋지 않아 얼마 후 동일한 문제가 발생합니다.

저는 이것을 ping3개의 curl다른 서버에서 시도하고 있습니다:

ping6 HOST_IP

그리고:

while true; do curl http://HOST_IP:5555 --connect-timeout 10; sleep 1; done

ip6tables내가 사용하는 규칙 은 다음과 같습니다 .

-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -s IPv6_OF_ONE_OF_MY_OTHER_HOSTS -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT
-P INPUT DROP

화이트리스트에 있는 호스트가 모든 포트에 액세스할 수 있고 다른 2개의 호스트는 포트에만 액세스할 수 있는지 테스트하려고 합니다.5555.

내가 뭐 잘못 했어요? 이 문제를 어떻게 해결할 수 있나요?

답변1

546몇 가지 테스트를 거친 후 다음을 사용하여 DHCPv6 클라이언트 포트를 활성화했을 때 문제를 발견했습니다 .

-A INPUT -m conntrack --ctstate NEW -m udp -p udp --dport 546 -d fe80::/64 -j ACCEPT

모든 것이 잘 작동하기 시작했습니다. 또한 이것이 실제 문제인지 확인하기 위해 이 규칙을 제거하려고 시도했습니다. 예, 실제로 이 규칙을 제거하면 이러한 패킷이 삭제되고 IPv6 주소의 서버에 대한 연결이 끊어집니다.

관련 정보