두 개의 동일한 네트워크 간에 전달되는 iptables 체인

두 개의 동일한 네트워크 간에 전달되는 iptables 체인

두 개의 동일한 네트워크가 있고 각각 TCP 서버와 TCP 클라이언트로 구성된 두 컴퓨터 간에 트래픽을 전달하고 싶습니다. 두 개의 네트워크에 연결된 컴퓨터를 사용하여 iptables를 사용하여 이 데이터를 전달하고 싶습니다. 클라이언트에서 전달자로 TCP 연결을 시작한 다음 서버와의 연결을 설정하고 싶습니다.

예를 들어 TCP 클라이언트(1.1.1.155)는 전달자(1.1.1.55)와 연결을 설정하고 내부적으로 요청을 서버(1.1.1.155)로 전달하여 연결을 완료합니다. 아래 그림을 참조하세요.

기본 네트워크 다이어그램

IPv4 전달을 활성화했습니다.

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables 구성을 지웠습니다

iptables -F

내가 시도한 iptables 구성은 다음과 같습니다.

iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth2 -j DNAT --to-destination 1.1.1.155
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

답변1

현재 디자인이 귀하에게 적합하지 않을 수 있습니다. 현재 문제는 로컬 서브넷이 원격 서브넷과 동일한 VPN을 생각나게 합니다. 설계로 돌아가면 전달자는 VPN 서버가 됩니다. 이 작업을 수행하려면 다음을 수행하십시오.

LAN-A subnet will remain unchanged
LAN-B subnet will remain unchanged
eth1 and eth2 on forwarder must belong to two unique subnets, without conflicting with each other or with LAN-A and LAN-B.

이러한 조건이 충족되면 방화벽 규칙에서 NAT를 사용해야 합니다. 중계기는 게이트웨이 역할을 한다는 점을 기억하십시오. 앞에서 언급한 것처럼 게이트웨이가 제대로 작동하려면 서로 다른 서브넷에 두 개 이상의 네트워크 인터페이스가 있어야 합니다.

관련 정보