iptables는 트래픽을 전달하지 않습니다

iptables는 트래픽을 전달하지 않습니다

포트 9750(포트 채팅 서버)으로 들어오는 모든 트래픽을 동일한 서브넷의 다른 시스템으로 리디렉션해야 합니다. 포트 클라이언트 - 동적.

iptables -t nat -A PREROUTING -p tcp -d x.x.x.a --dport 9750 -j DNAT --to-destination x.x.x.b:9750
iptables -t nat -A POSTROUTING -p tcp --dport 9750 -j MASQUERADE

그러나 host x.x.x.a포트 9750은 열리지 않습니다. 클라이언트가 서버에 연결되지 않습니다.

cat /etc/sysctl.conf |grep forward
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv6
#net.ipv6.conf.all.forwarding=1

답변1

x.x.x.a당신의 의도 가 무엇인지 잘 모르겠습니다 x.x.x.b. PREROUTING 규칙의 경우 외부 인터페이스와 내부 컴퓨터의 IP:포트를 지정해야 합니다.

포트 전달의 경우 MASQUERADE 규칙이 필요하지 않습니다. 그러나 FORWARD 체인의 트래픽을 허용하려면 규칙이 필요합니다.

iptables -A PREROUTING -t nat -i [external_iface] -p [proto] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p [proto] -d [internal_ip] --dport [internal_port] -j ACCEPT

답변2

패킷 전달 구성을 제공하지 않았으므로 놓쳤기를 바랍니다. 일시적으로 활성화할 수 있습니다:-

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

영구적으로 만들려면 /etc/sysctl.conf를 열고 다음 매개변수를 제공하십시오:-

net.ipv4.ip_forward=1

관련 정보