내 시스템에는 3개의 네트워크 카드가 있습니다: eth0(192.168.1.54), eth1(192.168.1.55), wg0(VPN, 192.168.99.1)
모든 eth1 트래픽(tcp 및 udp)을 wg0(Wireguard VPN)을 통해 라우팅하는 방법을 찾고 있습니다.
제가 달성하고 싶은 것은 휴대폰/태블릿/Apple TV 등에서 eth1 주소를 라우터에 설정하여 모든 트래픽이 VPN을 통해 리디렉션되도록 하는 것입니다.
원격 측(VPS)에는 eth0(기본 인터넷)과 wg0(192.168.99.2)이 있습니다.
지금까지 내가 한 일은 양쪽에 Wireguard 인터페이스를 성공적으로 설정한 것입니다(서로 핑할 수 있습니다).
라우팅 테이블:
default via 192.168.1.1 dev eth0 onlink
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.54
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.55
192.168.99.0/24 dev wg0 proto kernel scope link src 192.168.99.1
답변1
두 개의 이더넷 인터페이스가 필요하지 않습니다. VPN 서버의 공용 IP에 대한 호스트 경로를 정의 192.168.1.1
하고 기본 경로가 터널의 원격 끝을 가리키도록 합니다( 192.168.99.2
). LAN에 있는 다른 장치의 기본 경로를 로 지정합니다 192.168.1.54
. sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1
PC에서 패킷 전달( )을 활성화하는 것을 잊지 마세요 .
편집: 클래식 라우팅은 패킷이 수신된 인터페이스나 소스 주소와 같은 기록이 아니라 패킷이 이동하는 위치에만 관심을 갖기 때문에 IPv4 클래식 라우팅을 사용하여 원하는 솔루션을 얻을 수 없습니다. 패킷이 수신된 인터페이스를 기반으로 패킷을 분류하려면 정책 라우팅을 사용해야 합니다. 이 분류에 따라 VPN 터널을 통해 기본 경로를 정의하는 등 라우팅에 대체 경로 테이블을 사용할 수 있습니다.
정책 라우팅을 사용하려면 다음에 항목(VPN)을 추가해야 합니다 /etc/iproute2/rt_tables
.
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
1 vpn
vpn
이는 라우팅 테이블 번호 1의 이름을 제공합니다.
다음으로 다음 정책 규칙을 추가합니다.
ip rule add unicast iif eth1 table vpn
이 규칙은 "패킷이 인터페이스로 들어오면 eth1
라우팅 테이블을 사용하십시오 vpn
"라고 효과적으로 말합니다.
다음을 통해 규칙을 확인할 수 있습니다 ip rule show
.
ip rule show
0: from all lookup local
32765: from all iif eth1 lookup vpn
32766: from all lookup main
32767: from all lookup default
규칙은 일치할 때까지 오름차순으로 적용됩니다. 패킷이 interfave에서 수신되면 eth1
규칙 32765가 일치하고, 그렇지 않으면 다음 규칙이 시도됩니다.
vpn
이제 라우팅 테이블 에 경로를 추가할 수 있습니다 . 예를 들어 터널에 기본 경로를 추가하려면 다음을 수행하세요.
ip route add default dev wg0 via 192.168.99.2 table vpn
vpn
라우팅 테이블을 인쇄하려면 다음을 사용하십시오.
ip route show table vpn
아직은 실제로 테스트해 보지는 못해서 버그나 일부 누락된 부분이 있을 수 있습니다. 정책 라우팅에 대한 자세한 내용은 다음을 참조하세요.https://www.policyrouting.org또는https://linux-ip.net.