Назад | Перейти на главную страницу

Маршрутизация всего трафика wlan0 через tun0

Я ищу способ перенаправить весь трафик wlan0 (tcp и udp) через tun0 (openvpn).

Однако весь другой трафик, исходящий от самого устройства, не должен маршрутизироваться через tun0.

Я предполагаю, что это можно реализовать с помощью iptables или route, но ни один из моих вариантов, похоже, не работает.

# route add -net 0.0.0.0 gw 172.27.0.1 dev wlan0
SIOCADDRT: No such process

Информация: это связано с тем, что сервер VPN не является избыточным, и пользователи wlan не очень важны. Однако все службы, работающие на устройстве, довольно важны, и наличие виртуальной машины VPN без SLA - просто плохая идея. Пытаться свести к минимуму вероятность того, что что-то пойдет не так. Таким образом, установка VPN-сервера в качестве шлюза по умолчанию - не вариант. Я также хочу, чтобы все пользователи wlan0 использовали IP-адрес VPN-сервера в качестве внешнего IP-адреса.

Отредактируйте с помощью предоставленного сценария:

root@ft-genesi-xxx ~ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.27.0.17     0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.13.37.0      0.0.0.0         255.255.255.0   U     0      0        0 wlan0
172.27.0.0      172.27.0.17     255.255.192.0   UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
root@ft-genesi-xxx ~ # ./test.sh 
RTNETLINK answers: No such process
root@ft-genesi-xxx ~ # cat test.sh 
#!/bin/sh
IP=/sbin/ip
# replace with the range of your wlan network, or use fwmark instead
${IP} rule add from 10.13.37.0/24 table from-wlan
${IP} route add default dev tun0 via 127.72.0.1 table from-wlan
${IP} route add 10.13.37.0/24 dev wlan0 table from-wlan

Я считаю, что это должно вас подтолкнуть:

/usr/sbin/ip route add default via 172.27.0.17 dev tun0 table 200
/usr/sbin/ip rule add from 10.13.37.0/24 table 200
/usr/sbin/ip route flush cache

Это именно то, что я сделал здесь в своей настройке. Единственная разница в том, что я хотел маршрутизировать один хост (/ 32) вместо всей сети (/ 24).

Я думаю, что это невозможно без TAP-интерфейса для VPN или без использования ft-genesi-xxx в качестве шлюза для WLAN.

Если вы можете использовать интерфейс TAP:

##on ft-genesi-xxx:
echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp
iptables -t nat -A PREROUTING -i wlan0 -p tcp -j DNAT --to-destination 172.27.0.1
iptables -t nat -A PREROUTING -i wlan0 -p udp -j DNAT --to-destination 172.27.0.1

##on the vpn-server 172.27.0.1 machine:
#replace tapX with the interface the openvpn server uses
/usr/sbin/ip route add 10.13.37.0/24 dev tapX 

Если вы хотите использовать шлюз, вам нужно использовать мост, подобный этому [1], и использовать приведенные выше правила iptable, поэтому вам не нужно устанавливать маршрут по умолчанию для всей системы.

[1] http://tldp.org/HOWTO/Ethernet-Bridge-netfilter-HOWTO-3.html

Определите в / etc / iproute2 / rt_tables

 # I use 200, use a free number:
 200 from-wlan

а затем запустите:

#!/bin/sh
IP=/sbin/ip
# replace with the range of your wlan network, or use fwmark instead
${IP} rule add from 192.168.0.0/24 table from-wlan
${IP} route add default dev tun0 via x.y.z.z table from-wlan
${IP} route add 192.168.0.0/24 dev wlan0 table from-wlan

Это отправит весь трафик с 192.168.0.0/24 на tun0, кроме трафика на 192.168.0.0/24. Добавьте "via x.y.z.z", если вы хотите указать следующий переход