데비안 iptables

데비안 iptables

꽤 오랫동안 VPN 내부의 두 장치 사이에 포트 또는/또는 연결을 전달하려고 시도했지만 알아낼 수 없었습니다. 외부 IP를 사용하여 Debian 9.0 x64에 VPS를 설정했습니다. github에서 hwdsl2/setup-ipsec-vpn을 기반으로 VPN을 만들었습니다. 설치되었으며 모든 것이 잘 작동합니다. VPN을 통해 서버에 연결할 수 있고 내 IP 주소가 외부IP로 변경됩니다.

이제 문제는 다른 길로 가고 싶다는 것입니다.

IncommingIP -> (eth0)ExternalIP - 전달 -> (pppX) VPNIP

내 현재 iptables는 다음과 같습니다.

# Generated by iptables-save v1.6.0 on Mon Jun 29 10:55:31 2020
*nat
:PREROUTING ACCEPT [21617:1100891]
:INPUT ACCEPT [17101:829091]
:OUTPUT ACCEPT [703:55681]
:POSTROUTING ACCEPT [703:55681]
-A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 8.8.8.8
-A PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination 8.8.8.8
-A POSTROUTING -s 192.168.42.0/24 -o eth0 -j MASQUERADE

#-A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.42.10:8080
#-A POSTROUTING -d 192.168.42.10 -o ppp0 -p tcp --dport 8080 -j SNAT --to-source 192.168.42.1
-A PREROUTING --src 0/0 --dst 192.168.42.10 -p tcp --dport 8080 -j REDIRECT --to-ports 8080


COMMIT
# Completed on Mon Jun 29 10:55:31 2020
# Generated by iptables-save v1.6.0 on Mon Jun 29 10:55:31 2020
*filter
:INPUT ACCEPT [16:676]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [221:33480]
:f2b-sshd - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol none -j DROP
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j DROP

PRE/POST 경로를 시도한 후에도 작동하지 않는 일부 콘텐츠가 남아 있습니다.

포워드로 작동하려면 무엇을 변경해야 합니까(예: 테스트용 포트 8080)? 또한 VPN 네트워크 내에서 연결할 수 없는 이유는 무엇입니까? (ping만 작동합니다.) 괄호 안의 숫자는 정확히 무엇입니까?:PREROUTING ACCEPT [21617:1100891]

도와주세요

답변1

NAT 규칙이 올바르지 않습니다. 다음을 시도해 보십시오(IPSec/VPN 서버를 방금 설치했다고 가정).

기존 NAT 체인 규칙 보기(삭제 전):

$ sudo iptables -t nat -L -n --line-numbers

기존 NAT 규칙을 삭제합니다.

$ sudo iptables -t nat -D POSTROUTING 3

다음 두 NAT 규칙이 남을 때까지 위 명령을 반복합니다.

1    MASQUERADE  all  --  192.168.42.0/24      0.0.0.0/0
2    MASQUERADE  all  --  192.168.43.0/24      0.0.0.0/0            policy match dir out pol none

TCP 8080이제 인터넷 IP( 1.2.3.4)에서 VPN 클라이언트 IP( 192.168.42.10) 로 전달하는 DNAT 규칙을 추가할 차례입니다.

$ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 192.168.42.10:8080

그게 당신이 필요한 전부입니다. 모든 것이 괜찮다면 iptables 규칙을 저장할 수 있습니다.

관련 정보