Rota todo o tráfego wlan0 sobre tun0

2

Estou procurando uma maneira de rotear todo o tráfego wlan0 (tcp e udp) sobre tun0 (openvpn).

No entanto, todos os outros tráfegos originados do próprio dispositivo não devem ser encaminhados através do tun0.

Eu estou supondo que isso poderia ser realizado usando iptables ou route, mas nenhuma das minhas opções parece funcionar.

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

Informação: Isso ocorre porque o servidor VPN não é redundante e os usuários wlan não são realmente importantes. No entanto, todos os serviços executados no dispositivo são bastante importantes e ter uma máquina virtual VPN sem SLA é apenas uma má ideia. Tentando minimizar as chances de algo dar errado. Portanto, configurar o servidor VPN como gateway padrão não é realmente uma opção. Eu também quero que todos os usuários wlan0 usem o endereço IP do servidor VPN como IP externo.

Edite com o script fornecido:

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
    
por Tuinslak 21.02.2012 / 21:44

3 respostas

1

Acredito que isso deve ajudá-lo:

/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

Isso é exatamente o que eu fiz na minha configuração aqui. A única diferença é que eu queria rotear um único host (/ 32) em vez de uma rede inteira (/ 24).

    
por 25.02.2012 / 20:50
0

Defina em / etc / iproute2 / rt_tables

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

e, em seguida, execute:

#!/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

Isso enviará todo o tráfego de 192.168.0.0/24 para tun0, exceto tráfego para 192.168.0.0/24. Adicione "via x.y.z.z" se você quiser especificar um próximo salto

    
por 21.02.2012 / 23:34
0

Acho que isso não é possível sem ter uma interface TAP para a VPN ou fazer com que o ft-genesi-xxx funcione como um gateway para a WLAN.

Se você puder usar uma interface 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 

Se você quiser usar um Gateway, precisará usar o Bridging como este [1] e usar as regras iptable acima para não precisar definir uma rota padrão para todo o sistema.

[1] link

    
por 01.03.2012 / 14:21