다음을 제외하고는 I/O 규칙이 허용되지 않도록 서버(서버 A라고 함) 방화벽을 설정했습니다. - 들어오는 SSH 연결 - 나가는 SSH 연결이 이제 제대로 작동합니다!
이제 다음을 수행하고 싶습니다. 1. "-w" openssh 옵션(tun 인터페이스)을 사용하여 지정된 IP 주소에 대한 주문형 VPN 서버 연결을 설정합니다. 2. 이 VPN 연결이 설정되면 나가는 모든 트래픽을 이 새로운 tun 인터페이스로 라우팅합니다. (이 방법으로 wget을 실행하면 트래픽이 VPN 터널을 통과하게 됩니다)
1단계는 쉽게 완료할 수 있습니다. 그런데 2단계를 망쳤어요.
내 방화벽 규칙은 다음과 같습니다.
# Allow incoming / outgoing SSH
iptables -I INPUT -j ACCEPT -p tcp --dport 22 --sport 1:65000
iptables -A OUTPUT -j ACCEPT -p tcp --dport 1:65000 --sport 22
###Not working
# VPN flows
iptables -A INPUT -j ACCEPT -s 10.0.0.1
iptables -A OUTPUT -j ACCEPT -d 10.0.0.1
다음은 1단계의 명령줄입니다(내 서버 A에서 실행).
ssh -o PermitLocalCommand=yes -o LocalCommand="ifconfig eth0 10.0.0.2 pointopoint 10.0.0.1 netmask 255.255.255.0" -o ServerAliveInterval=60 -w 1:1 [email protected] "ifconfig tun1 10.0.0.1 pointopoint 10.0.0.2 netmask 255.255.255.0"
기적적으로 작동합니다!
다음으로 새 VPN IP를 기본 경로로 설정해 보았습니다.
ip route add default via 10.0.0.1
ip route del default via my.previous.gw
이것은 작동하지 않습니다.
무엇이 잘못되었는지 아시나요?
답변1
당신이 앉아 있는 나뭇가지를 잘라냈을 수도 있다. 이전 기본 경로를 삭제했으므로 해당 경로에 더 이상 경로가 없을 가능성이 높습니다 given.ip.add
.
출력을 확인하여 이를 확인할 수 있습니다. ip route get given.ip.add
더 이상 사용되지 않는 경우 via my.previous.gw
문제가 될 수 있습니다. 이전 기본 경로를 제거하기 전에 먼저 다음을 추가하여 이를 수정할 수 있습니다.
ip route add given.ip.add via my.previous.gw
이제 저는 이 부분을 이해하지 못하기 때문에 모든 것에 조건문을 사용합니다.
LocalCommand="ifconfig eth0 10.0.0.2 pointopoint 10.0.0.1 netmask 255.255.255.0"
tun1
나는 이것이 대신 새로운 인터페이스에 적용되기를 바랐습니다 eth0
.
그런 다음 이것이 적용되면 10.0.0.1
사용하려는 경우어느IP가 터널을 통과하고 방화벽 규칙이 이를 차단합니다(기본 정책이 DROP이라고 가정). 두 개의 새로운 터널 IP 간의 트래픽뿐만 아니라 VPN 터널 인터페이스를 통한 모든 트래픽을 허용하도록 규칙을 변경하는 것이 좋습니다.
iptables -A INPUT -i tun1 -j ACCEPT
iptables -A OUTPUT -o tun1 -j ACCEPT
원격 피어는 NAT가 활성화된 라우터로 구성되어야 합니다(예: iptables 및 MASQUERADE 사용).