문제가 있습니다. LAN 외부에서 원격 데스크톱을 사용하여 Windows 컴퓨터에 연결할 수 없습니다.
저는 Ubuntu 14.04, iptables를 사용하고 있습니다.
External Inferface: eth1
LAN Intergace: eth2
Windows IP: 192.168.1.100
Serverlinux LAN IP: 192.168.1.2
Serverlinux External IP: 186.xxx.xxx.xxx
실제 iptables 구성:
iptables-restore <<-EOF
*nat
-A POSTROUTING -o "$EXTIF" -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT
-A FORWARD -j LOG
COMMIT
EOF
나는 많은 예를 시도했지만 운이 좋지 않았습니다.
예시 1:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.100
iptables -t nat -A POSTROUTING -s 192.168.1.100 -p tcp --sport 3389 -j SNAT --to 192.168.1.2
iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
예 2:
iptables -A INPUT -i eth1 -p tcp --destination-port 3389 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT 192.168.1.100:3389
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
예시 3: 오류(iptables: 해당 이름과 일치하는 체인/대상이 없습니다.)
iptables -A PREROUTING -d 186.xxx.xxx.xxx -p tcp -m tcp --dport 3386 -j DNAT --to-destination 192.168.1.100:3399
iptables -A FORWARD -i eth1 -o eth2 -d 192.168.1.100 -p tcp -m tcp --dport 3399 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
내가 무엇을 놓치고 있나요??
미리 감사드립니다.
답변1
다음은 외부 IP 주소의 포트 1337을 내부 IP 주소의 포트 3389로 전달합니다.
iptables -t nat -I PREROUTING -d 186.xxx.xxx.xxx -p tcp --dport 1337 -j DNAT --to-destination 192.168.1.100:3389
iptables -I FORWARD -o eth2 -d 192.168.1.100 -p tcp --dport 3389 -j ACCEPT
첫 번째 규칙(세 번째 예에서 놓친 nat 테이블)은 패킷이 들어올 때 대상 주소를 다시 작성합니다. 두 번째 규칙은 새로 다시 작성된 패킷이 전달되도록 허용합니다.
라우터 뒤에 있더라도 작동하기를 원한다고 가정하므로 들어오는 인터페이스에 대한 모든 참조를 제거했습니다(일관성을 위해).
답변2
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 1337 -j DNAT --to-destination 192.168.1.100:3389
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT