저는 항상 휴대폰에서 홈 서버를 통해 트래픽을 라우팅하고 모바일 트래픽을 필터링할 수 있도록 집에 RaspberryPi, PiHole 및 Wireguard VPN 서버를 설정했습니다. 이제 출력에 VPN(구체적으로 NordVPN)을 넣고 싶지만 NordVPN 연결을 시작했기 때문에 내 전화기는 내부 네트워크(Ssh 클라이언트를 통해)나 인터넷에 액세스할 수 없습니다.
다음은 VPN이 활성화된 라우팅 테이블입니다(wg0은 내 휴대폰과 라즈베리 파이 사이의 와이어가드 인터페이스이고, tun0은 라즈베리 파이에서 NordVPN으로 나가는 VPN입니다. *** ip는 서버에 연결하려는 특정 IP입니다).
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.1 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
10.6.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
***.***.***.*** 192.168.1.1 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.8.0.1 128.0.0.0 UG 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
내 전화기에서 내부 네트워크로 SSH를 연결하고 NordVPN을 통해 인터넷으로 터널링하려면 어떻게 해야 하나요?
그 점을 분명히 밝혔기를 바랍니다. 정말 감사합니다!
답변1
첫 번째 문제는 OpenVPN 클라이언트가 설정한 기본 경로로 인해 핸드셰이크 응답이 tun0 인터페이스로 라우팅된다는 것입니다.
이 문제를 해결하려면:
#adds the default route to respond via the eth0
ip route add default via 192.168.1.1 dev eth0 table 1
#adds the default route to the local network
ip route add 192.168.1.0/24 dev eth0 table 1
#adds the response route
ip route add 10.6.0.0/24 dev wg0 table 1
#adds the policy so that all the traffic that comes through eth0 goes back by eth0
ip rule add from 192.168.1.0/24 table 1
이제 들어오는 모든 것은 eth0
해당 규칙에 의해 차단되고 표 1에 있는 내용을 사용하여 라우팅됩니다. 이는 모든 트래픽을 동일한 인터페이스로 다시 라우팅하는 3가지 규칙입니다.
이제 성공적으로 핸드셰이크를 완료하고 로컬 네트워크에 액세스할 수 있지만 여전히 인터넷에 액세스할 수 없습니다. 이것이 두 번째 문제입니다. 기본적으로 wireguard 클라이언트(또는 최소한 piVPN이 설치된 구성)는 wireguard 서브넷에서 인터페이스로의 NAT 트래픽에 대해 iptables nat 규칙을 설정합니다 eth0
. 그러나 새 라우팅 테이블을 사용하면 트래픽이 인터페이스로 직접 이동하므로 트래픽이 tun0
기록되지 않고 10.6.0.2
원래 IP(또는 기타)로 나가게 됩니다. 따라서 또 다른 iptables nat 규칙을 추가해야 합니다:
iptables -t nat -A POSTROUTING -o tun0 -s 10.6.0.0/24 -j MASQUERADE
이것이 다른 누군가에게 도움이 되기를 바랍니다. 주말 내내 그것을 알아내는데 걸렸습니다. 저는 처음부터 시작해야 했습니다!