wlan0에서 tun0(OpenVPN)으로 모든 패킷을 전달하는 방법은 무엇입니까?

wlan0에서 tun0(OpenVPN)으로 모든 패킷을 전달하는 방법은 무엇입니까?

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

인용하다여기그리고여기

관련 정보