새로운 iptables NAT는 다른 HTTP 요청에 대해 오류 400 잘못된 요청을 생성합니다.

새로운 iptables NAT는 다른 HTTP 요청에 대해 오류 400 잘못된 요청을 생성합니다.

모두:

최근에는 VPN(0x1000/0x1000)을 통해 포트 443을 통해 특정 대상(172.67.168.48)으로 트래픽을 라우팅하는 몇 가지 새로운 iptables(RE: 아래 코드 조각) 규칙을 추가했습니다. 새로운 규칙은 필요에 따라 VPN을 통해 NAT를 수행했지만 위의 목표와 관련 없는 다른 HTTP 요청이 400 잘못된 요청 오류 응답을 생성하도록 하는 바람직하지 않은 영향을 미쳤습니다.


# Create the RPDB rules
ip rule add from 0/0 fwmark "0x1000/0x1000" table ovpnc1 prio 9993        # VPN 1 fwmark

iptables -t mangle -A PREROUTING -i br0 -p tcp -d 172.67.168.48 --dport 443 -j MARK --set-mark 0x1000/0x1000
iptables -t nat -A PREROUTING -i br0 -p tcp -m mark --mark 0x1000/0x1000 -j DNAT --to-destination 172.67.168.48:443

대상 주소와 포트가 명시적으로 지정된 경우 다른 HTTP 요청이 새로운 NAT 규칙(400 잘못된 요청)의 영향을 받는 이유가 무엇인지 아십니까?

시간을 내어 도와주셔서 감사합니다.

감사합니다,

게리

답변1

VPN 서버:가설이더넷 0(IP 1.2.3.4)는 대상 웹 서버의 IP 또는 네트워크에 직접 연결되거나 최소한 이에 대한 경로가 있는 물리적 인터페이스입니다. 웹 서버 IP로 이동하는 모든 트래픽을 모니터링하고 172.67.168.48:443강제로 VPN 터널을 통과한 다음 NAT로 연결할 수 있습니다. eth0의 IP 주소( 1.2.3.4이 경우). 이 경우,br0인터페이스(IP 10.10.10.1)는 VPN 서버가 터널 트래픽에 사용하는 가상 인터페이스입니다. VPN이 실행 중일 때 패킷을 대상 IP로 라우팅하는 방법을 이미 알고 있습니다.172.67.168.48

그렇지 않은 경우 정적 경로를 추가해야 합니다.

$ ip route show
172.67.168.48/32 via 10.10.10.1 dev br0 metric 101

라우팅 설명이 충족되면 IP에 대한 트래픽이 172.67.168.48:443터널을 통해 라우팅되고 반대쪽으로 1.2.3.4나가도록 강제할 수 있습니다.172.67.168.48

$ sudo iptables -t nat -A POSTROUTING -o eth0 -p tcp -m tcp -d 172.67.168.48 --dport 443 -j SNAT --to-source 1.2.3.4
$ sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

예를 들어 클라이언트가 에 패킷을 보내면 172.67.168.48:80소스 IP는 변경되지 않으며 후속 체인에서 허용하지 않으면 패킷이 삭제될 수 있습니다.

답변2

모두:

내 원래 iptables -t nat 규칙에 --dport 443 정의가 누락되었으며 다른 HTTP 요청과 상호작용한 이유가 밝혀졌습니다.

# Create the RPDB rules
ip rule add from 0/0 fwmark "0x1000/0x1000" table ovpnc1 prio 9993        # VPN 1 fwmark

iptables -t mangle -A PREROUTING -i br0 -p tcp --dport 443 -d 172.67.168.48 -j MARK --set-mark 0x2000/0x2000
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to-destination 172.67.168.48:443 -m mark --mark 0x2000/0x2000

iptables -t nat 규칙에 --dport 443 정의를 추가한 후 문제가 해결되었습니다.

이것이 앞으로 다른 사람들에게 도움이 되기를 바랍니다.

존경,

게리

관련 정보