ip6tables - 로컬 호스트에 대한 IPv6 DNAT

ip6tables - 로컬 호스트에 대한 IPv6 DNAT

다음과 같은 IPv4 규칙이 있습니다.

  1. iptables -t nat -A PREROUTING -d "server ipv4" -p tcp -m tcp --dport 80 -i eth0 - j DNAT --to-destination 127.0.0.1:55555

  2. iptables -P INPUT ACCEPT

또한 주소를 수신하는 간단한 프록시가 있습니다 localhost: 127.0.0.1:55555

IPv4에서는 잘 작동합니다.

IPv6에서 동일한 작업을 수행하려고 하면 다음과 같습니다.

  1. iptables -t nat -A PREROUTING -d "server ipv6 " -p tcp -m tcp --dport 80 -i eth0 -j DNAT --to-destination [::1]:55555

  2. ip6tables -P INPUT ACCEPT

나는 그것을 작동시킬 수 없습니다!

나는 그것을 작동시킬 수 있습니다 :

  1. --to-destination ["link-local IPv6"]:55555
  2. --to-destination ["Server IPv6"]:55555

전달을 켜고 필터 테이블에 일부 로그 줄을 추가하면 전달 체인이 됩니다.

  1. echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

  2. ip6tables -I FORWARD -j LOG --log-prefix='[filter FORWARD] '

패킷이 보이네요.

[268332.372177] [필터 전달] IN=eth0 OUT=eth0 MAC=be:69:fd:2a:9e:bd:0a:08:f1:46:19:a1:86:df SRC= DST=0000:0000: 0000:0000:0000:0000:0000:0001 LEN=80 TC=0 HOPLIMIT=63 FLOWLBL=0 프로토콜=TCP SPT=42082 DPT=55555 창=28800 RES=0x00 SYN URGP=0

OUT 인터페이스가 "lo" 대신 "eth0"이고 커널은 패킷이 해당 서버용이 아니라고 생각하는 것을 볼 수 있습니다.

나는 centOS 7을 가지고 있고 Ubuntu 16에서도 이것을 시도했습니다.

답변1

수행 중인 작업에 fwmark를 추가하고 특수 라우팅 테이블을 사용하려면 IP 규칙을 추가하는 것이 좋습니다. 양식에 다음과 같이 입력하면 됩니다: Route to dev lo. dnat는 재작성을 담당하고 fwmark는 프록시가 응답할 수 있도록 lo로의 라우팅을 담당합니다.

관련 정보