iptables: 매스커레이딩을 통해 요청을 다른 로컬 포트로 전달

iptables: 매스커레이딩을 통해 요청을 다른 로컬 포트로 전달

포트 80에서 웹 애플리케이션을 실행하고 있으며 특정 API의 경우 소스 IP를 화이트리스트에 추가해야 합니다. 내 /19 네트워크의 모든 사람이 이러한 API를 사용할 수 있어야 하고 이 웹 애플리케이션은 화이트리스트 작성을 위한 CIDR 표기법을 지원하지 않기 때문에 다음 설정을 고려하고 있습니다.

  • 내 /19 네트워크의 모든 사람이 포트 1337을 통해 내 서버에 연결하도록 허용합니다.
  • Linux 웹 서버에서는 매스커레이딩을 사용하여 포트 1337에서 포트 80으로 트래픽을 다시 라우팅합니다.
  • 내 웹 애플리케이션에서는 IP 127.0.0.1만 화이트리스트에 포함되어 있습니다. 웹 애플리케이션의 경우 모든 트래픽이 localhost에서 발생하기 때문입니다.
  • 내 API의 응답이 원본을 반환하는지 확인하세요.

이 사용 사례에서 iptable 규칙은 어떤 모습입니까?

답변1

기본적으로 표준 NIC( eth0)에서 루프백 인터페이스( lo)로의 포트 전달은 비활성화되어 있습니다. 이전(깨진) iptables 규칙을 제거하고 다음 명령을 실행합니다.

# Forward any traffic destined to TCP 1337 on eth0 to 80 on loopback if source network is X.X.X.X/19
$ sudo iptables -t nat -I PREROUTING -p tcp -i eth0 -s X.X.X.X/19 --dport 1337 -j DNAT --to-destination 127.0.0.1:80
# Then allow forwarding from standard NIC to loopback (assuming eth0 is the standard NIC)
$ sudo sysctl -w net.ipv4.conf.eth0.route_localnet=1

관련 정보