wlan0과 eth0이 있습니다. Eth0은 인터넷에 연결되어 있고 wlan0은 액세스 포인트입니다. VPN을 통해 모든 트래픽을 자동으로 라우팅하지 않도록 "--pull-filterignoreredirect-gateway" 옵션을 사용하여 OpenVPN 서버에 연결합니다. 이는 제가 원하는 작업이 아닙니다.
wlan0(액세스 포인트)에서 tun0으로 모든 트래픽을 라우팅하려고 합니다. 이렇게 하면 내 액세스 포인트에 연결하는 모든 클라이언트가 VPN을 사용하게 됩니다. 나는 iptables를 사용하여 이 작업을 수행하려고 합니다.
iptables -A POSTROUTING -t nat -o wlan0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o tun0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT
이것은 작동하지 않습니다(카운터가 업데이트되지 않습니다). tun0을 eth0으로 바꾸려고 시도했는데 제대로 작동했으므로(그러나 ofc는 VPN을 완전히 우회함) 문제가 tun0에 있다고 가정합니다. 또한 IP 라우팅 테이블이 이에 더 적합하다는 내용도 읽었습니다. 이것이 사실이라면 어떻게 해야 합니까?
답변1
wlan 서브넷이 192.168.1.0/24이고 tun0 IP가 10.10.10.99라고 가정합니다.
VPN 게이트웨이에서 다음 명령을 실행합니다.
라우팅 활성화(아직 활성화되지 않은 경우):
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
FORWARD 규칙을 유지하면서 처음 두 개의 기존 NAT 규칙을 삭제합니다.
sudo iptables -t nat -L -n --line-numbers
sudo iptables -t nat -D POSTROUTING 1
NAT 규칙을 삭제한 후 올바른 형식으로 새 NAT 규칙을 추가하세요.
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -o tun0 -j MASQUERADE
마지막 단계는 "정책 라우팅"을 사용하여 라우팅 테이블을 처리하는 것입니다.
sudo ip rule add from 192.168.1.0/24 table 99
sudo ip route add 0.0.0.0/0 via 10.10.10.99 dev tun0 table 99