web-dev-qa-db-ja.com

OpenWRT上のOpenVPN:VPNトンネルを介した特定のサブネットのルーティング

OpenWRT 15.05がインストールされたルーター(Chaos Calmer)をセットアップし、2つのWi-Fiネットワークをそれぞれ独自のネットワークインターフェイスで構成しました。

  • wi-fi-1:インターフェースbr-lan IPアドレス10.0.2.1;アドレス範囲10.0.2.0/24
  • wi-fi-2:インターフェースbr-vpn IPアドレス10.0.10.1;アドレス範囲10.0.10.0/24

OpenVPNクライアントソフトウェアをvpnサービスvpnservice1に接続するように設定しました。 OpenWRTシステムログで、openvpnクライアントがvpnservice1に正常に接続し、インターフェイスtunが開いていることがわかります。

私の目的は、デフォルトゲートウェイを介してネットワークwi-fi-1(10.0.2.0/24)からのすべてのトラフィックをルーティングすることです。そして、すべてのインターネット行きのトラフィックをvpnインターフェースtunを介してwi-fi-2(10.0.10.0/24)にルーティングします。注意。 wi-fi-2ネットワーク(10.0.10.0/24)に接続されているデバイスが、このネットワーク上の他のデバイスに接続できるようにしたいのですが。

私が現在持っている構成では、wi-fi-1ネットワーク上のデバイスは、デフォルトゲートウェイ経由でインターネットに接続できます。ただし、wi-fi-2に接続されたデバイスはインターネットに接続できません。どんな援助でも大歓迎です:)

私の設定は以下に記載されています:

  1. ファイアウォール構成(/ etc/config/firewall):

    _config rule config rule option src 'wan' option dest 'lan' option proto 'esp' option target 'ACCEPT' config rule option src 'wan' option dest 'lan' option dest_port '500' option proto 'udp' option target 'ACCEPT' config zone option input 'ACCEPT' option output 'ACCEPT' option name 'stream' option network 'stream' option masq '1' option forward 'ACCEPT'
    config zone option input 'ACCEPT' option output 'ACCEPT' option name 'stream_vpn' option forward 'ACCEPT' option network 'stream_vpn' option masq '1' config forwarding option dest 'stream' option src 'stream_vpn' config forwarding option dest 'stream_vpn' option src 'stream'
    _

  2. ネットワーク構成(/ etc/config/network):

    _config interface 'lan' option ifname 'eth1' option force_link '1' option type 'bridge' option proto 'static' option netmask '255.255.255.0' option ip6assign '60' option ipaddr '10.0.2.1' config interface 'wan' option ifname 'eth0' option proto 'dhcp' config interface 'stream_vpn' option proto 'none' option ifname 'tun0' config interface 'stream' option proto 'static' option ipaddr '10.0.10.1' option netmask '255.255.255.0' option type 'bridge' option _orig_ifname 'stream_lan wlan1-2' option _orig_bridge 'true' option ifname 'stream_lan'_

  3. OpenVPNクライアント 'vpnservice1'設定(/ etc/openvpn):

_config openvpn 'vpnservice1' option dev_type 'tun' option client '1' option resolv_retry 'infinite' option persist_tun '1' option persist_key '1' option tun_ipv6 '1' option cipher 'AES-256-CBC' option remote_random '0' option route_delay '2' option route_nopull '1' option route '10.0.10.1 255.255.255.255' option auth_retry 'interact' option auth 'SHA1' option remote_cert_tls 'server' option reneg_sec '0' option tls_client '1' option verb '3' option mute '20' option float '1' option ifconfig_nowarn '1' option auth_user_pass '/etc/openvpn/vpnservice1/userpass.txt' option port '1194' option remote 'vpnservice1.com' option auth_nocache '1' option dev 'tun0' option proto 'udp' option comp_lzo 'adaptive' option enabled '1' option fast_io '1' option tun_mtu '1500' option tun_mtu_extra '32' option ca '/etc/openvpn/vpnservice1/vpnservice1_com.crt' option ping '15' option ping_restart '0' option tls_auth '/etc/openvpn/vpnservice1/vpnservice1_com_tls.key 1' option script_security '2'_

  1. インターフェースのリスト(ifconfig -a):

    br-lan Link encap:Ethernet HWaddr C0:56:27:7A:92:D3 inet addr:10.0.2.1 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::c256:27ff:cd56:92a1/64 Scope:Link inet6 addr: fd1d:c378:aa11::1/60 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15469 errors:0 dropped:0 overruns:0 frame:0 TX packets:15465 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2029206 (1.9 MiB) TX bytes:9594955 (9.1 MiB) br-vpn Link encap:Ethernet HWaddr 06:25:9C:13:97:F5 inet addr:10.0.10.1 Bcast:10.0.10.255 Mask:255.255.255.0 inet6 addr: fe80::425:cc22:ab34:22e1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:640 errors:0 dropped:0 overruns:0 frame:0 TX packets:566 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:101972 (99.5 KiB) TX bytes:71890 (70.2 KiB) eth0 Link encap:Ethernet HWaddr C2:56:27:7A:92:D3 inet addr:10.0.1.21 Bcast:10.0.1.255 Mask:255.255.255.0 inet6 addr: fe80::c056:34ff:abcd:84d3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:13175 errors:0 dropped:0 overruns:0 frame:0 TX packets:12879 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:532 RX bytes:8697083 (8.2 MiB) TX bytes:1939234 (1.8 MiB) Interrupt:194 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.8.134 P-t-P:10.8.8.133 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

  2. ルーティングリスト(route -n):

    _Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.1.1 0.0.0.0 UG 0 0 0 eth0 10.0.10.0 0.0.0.0 255.255.255.0 U 0 0 0 br-vpn 10.0.10.1 205.1.2.3 255.255.255.255 UGH 0 0 0 tun0 205.1.2.3 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 br-lan_


@porchez提案された変更を試しました。 iproute2パッケージをインストールしました。

/ etc/iproute2/rt_tablesに次の行を追加しました

_0 admin
_

新しいシェルスクリプト/etc/openvpn/guest-up.shを作成し、行を追加しました

_ip rule add from 10.0.10.0/24 table admin
ip route add default dev tun0 table admin 
_

私のopenvpn構成ファイル(/ etc/config/openvpn)にオプションを追加

_option script_security '2'
option up '/etc/openvpn/guest-up.sh'
_

VPNセッションを再起動した後、syslogエントリはvpnセッションが正常に接続されたことを示しました。ただし、Wi-FiネットワークはVPN経由でインターネットに接続していません。

_ip route list_を実行すると、

_0:      from all lookup 128
0:      from 10.0.10.0/24 lookup 1
0:      from 10.0.10.0/24 lookup 2
0:      from 10.0.10.0/24 lookup 3
0:      from 10.0.10.0/24 lookup 4
0:      from 10.0.10.0/24 lookup 5
0:      from 10.0.10.0/24 lookup 6
0:      from 10.0.10.0/24 lookup 7
0:      from 10.0.10.0/24 lookup 8
_

コマンド_ip route show table admin | grep "10.0.10.0_を実行すると、

_10.0.10.0/24 dev br-vpn  proto kernel  scope link  src 10.0.10.1
broadcast 10.0.10.0 dev br-vpn  table local  proto kernel  scope link  src 10.0.10.1
_

謝罪私はLinuxネットワーキングとルーティングにかなり慣れていません。

2
Michael

Iproute2パッケージで可能になるはずです:

opkg update
opkg install ip

私はそれを使い始めたばかりなので、私はいくつかのヒントしか与えられず、あなたの特定のケースのための実用的な解決策は与えられないと思います。 iproute2を使用すると、ポリシールーティング(条件付きルーティング)を実装できます。あなたの場合、2つのデバイス(br-lanとbr-vpn)に2つの異なるルートが必要です。 br-lanの場合、これはすでに導入されているようです。次に、br-vpn(またはそれが表すサブネット)からのすべてのトラフィックを、tun0デバイスとvpnを介してルーティングする必要があります。

私の推測は次のようなものです(おそらく機能していませんが、うまくいけば正しい方向に進みます):

/ etc/iproute2/rt_tablesを編集して、この行を追加します

0 admin 

次に:

ip rule add from 10.0.10.0/24 table admin
ip route add default dev tun0 table admin  

直感:10.0.10.0/24サブネットからのすべてのトラフィックのルールを追加し、これを処理する方法について管理テーブルを調べるようにiproute2に指示します。次に、デフォルトのルールを管理テーブルに追加し、デフォルトですべてのVPNを介してルーティングします。

私はあなたの設定に少し混乱しています。 「route -n」出力とifconfigと/ etc/config/networkの出力が同じセッションからのものであることを確認しますか?

これらの変更は "route -n"では反映されないことに注意してください。代わりに

ip rule list
ip route show table admin 
1
mc51