web-dev-qa-db-ja.com

すべての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ユーザーがそれほど重要ではないためです。ただし、デバイスで実行されているすべてのサービスは非常に重要であり、SLAがないVPN仮想マシンを使用することは悪い考えです。問題が発生する可能性を最小限に抑えるようにしてください。デフォルトゲートウェイとしてのVPNサーバーは実際にはオプションではありません。また、すべてのwlan0ユーザーがVPNサーバーのIPアドレスを外部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
2
Tuinslak

私はこれがあなたを動かすはずだと信じています:

/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

これはまさに、ここでのセットアップで行ったことです。唯一の違いは、ネットワーク全体(/ 24)ではなく単一のホスト(/ 32)をルーティングしたかったことです。

1
Laurence

/ 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へのトラフィックを除くすべてのトラフィックが192.168.0.0/24からtun0に送信されます。ネクストホップを指定する場合は、「viax.y.z.z」を追加します

0
user111506

これは、VPN用のTAPインターフェイスがないか、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

0
Badmaster