iptables는 클라이언트에서 게이트웨이를 통해 서버로 모든 연결을 전달합니다.

iptables는 클라이언트에서 게이트웨이를 통해 서버로 모든 연결을 전달합니다.

내 클라이언트(Windows)의 모든 포트를 게이트웨이(Linux) 뒤의 서버(Windows)로 전달하고 싶습니다.

내 네트워크 토폴로지는 다음과 같습니다.

10.20.10.14 --> 10.20.10.4 --> 192.168.1.1 --> 192.168.1.4
   client          ppp0           eth0          server
                |--------- Gateway -------|

게이트웨이 장치에는 ppp0과 eth0이라는 두 개의 네트워크 장치가 있습니다.

클라이언트와 ppp0 간의 네트워크 연결을 통해 서버 장치가 클라이언트가 보낸 데이터와 동일한 포트의 데이터를 볼 수 있기를 바랍니다.

즉, 서버는 클라이언트와 직접 통신하고 있다고 생각해야 하며, 이 경우 게이트웨이는 투명합니다.

그리고 이 규칙을 삭제하는 방법을 알고 싶습니다.

어떤 아이디어가 있나요?

참고: 저는 모든 기기의 관리자입니다.

답변1

영어 규칙을 iptables 규칙으로 변환하려면 다음 규칙만 필요합니다.

iptables -t nat -A PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4

대상 포트는 변경되지 않습니다. 클라이언트가 동시에 서버에 직접 연결되는 드문 경우를 제외하고 소스 포트도 변경되어서는 안 됩니다.

192.168.1.410.20.10.4클라이언트가 수동으로 경로를 경유에 추가 하고 서버에 직접 액세스하는 것을 막을 수는 없습니다 . 이를 원하지 않는 경우 서버의 IP를 숨기기 위해 다음 규칙을 추가할 수도 있습니다.

iptables -I FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP

이렇게 하면 unDNAT 서버에 직접 액세스할 수 없습니다.

이러한 규칙을 제거하려면 다음을 사용하십시오 -D.

iptables -D FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP
iptables -t nat -D PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4

무작위 발언:

  • DNATed 연결이 전달되므로 게이트웨이에서 IP 전달을 활성화해야 합니다. 가장 쉬운 일은 입니다 echo 1 > /proc/sys/net/ipv4/ip_forward.
  • 192.168.1.1물론 서버는 기본 게이트웨이인 게이트웨이( )와 같은 연결을 수락하기 위해 클라이언트에 대한 경로가 필요합니다 .
  • -i ppp0-d 10.20.10.4선택 사항이며 제거할 수 있습니다(또는 원하는 경우 PREROUTING 규칙에서 교체). -i ppp+와일드 카드 로 대체하지 않으면 +문제가 발생할 수 있습니다. 빠른 링크 실패/재연결이 발생할 때 이전에 연결이 끊어지지 ppp1않았다면 ppp0새 ppp 인터페이스가 호출될 수 있습니다 . iptables 규칙은 더 이상 일치하지 않습니다.
  • DNAT 규칙이 삭제되면 이미 설정된 흐름은 영향을 받지 않으며 새 흐름은 영향을 받습니다(즉, 서버에 도달하지 않습니다).

관련 정보