すべての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
私はこれがあなたを動かすはずだと信じています:
/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)をルーティングしたかったことです。
/ 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」を追加します
これは、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