OpenVPNクライアントを介してLANサブネットにルーティング

OpenVPNクライアントを介してLANサブネットにルーティング

OpenVPNクライアントを介して接続されたLANサブネットにルーティングしようとしています。

そのコマンドの使用に問題がありますroute。わかりません。 OpenVPN リンクが確立され、pingクライアントを接続できます。

VPNサーバーのLANサブネットにパスを追加しようとすると、次のエラーが発生します。

# route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.9.0.6 dev tun0
SIOCADDRT: No such process

ルーティングテーブルはOpenVPNサーバーがあるのに10.9.0.0/24、何が問題なのかよくわかりません。

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ve108.csr2.lga1 0.0.0.0         UG    0      0        0 eth0
10.9.0.0        10.9.0.2        255.255.255.0   UG    0      0        0 tun0
10.9.0.2        *               255.255.255.255 UH    0      0        0 tun0
204.145.81.0    *               255.255.255.0   U     0      0        0 eth0

追加情報:

# ip ad sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0e:cf:20:c1:24 brd ff:ff:ff:ff:ff:ff
    inet 204.145.81.11/24 brd 204.145.81.255 scope global eth0
    inet6 fe80::20e:cfff:fe20:c124/64 scope link 
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none 
    inet 10.9.0.1 peer 10.9.0.2/32 scope global tun0

pingルーティングしたいVPNクライアントにアクセスできますが、なぜこの問題が発生するのか理解できません。私が知っている限り、パスを追加できるはずです。

# ping -c 1 10.9.0.6
PING 10.9.0.6 (10.9.0.6) 56(84) bytes of data.
64 bytes from 10.9.0.6: icmp_req=1 ttl=64 time=24.0 ms

--- 10.9.0.6 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 24.008/24.008/24.008/0.000 ms

詳細は次のとおりです。OpenVPNクライアント、VPNサーバーに接続します。私がルーティングしたいネットワークはこのクライアントにあります。

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         greece-gw.secus 0.0.0.0         UG    2      0        0 eth0
10.9.0.1        10.9.0.5        255.255.255.255 UGH   0      0        0 tun0
10.9.0.5        *               255.255.255.255 UH    0      0        0 tun0
loopback        localhost       255.0.0.0       UG    0      0        0 lo
192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
198.50.241.0    *               255.255.255.0   U     0      0        0 eth0

VPNサーバーに正常に到達します。

# ping -c 1 10.9.0.1
PING 10.9.0.1 (10.9.0.1) 56(84) bytes of data.
64 bytes from 10.9.0.1: icmp_seq=1 ttl=64 time=24.0 ms

--- 10.9.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 24.017/24.017/24.017/0.000 ms

IP転送を有効にします。

# sysctl -a | grep forwarding
net.ipv4.conf.all.forwarding = 1

iptables転送を許可するように設定しました。

# iptables -nvL FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  tun0   eth1    0.0.0.0/0            0.0.0.0/0

クライアントインタフェースの構成は次のとおりです。

# ip ad sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:5f:f2:1e brd ff:ff:ff:ff:ff:ff
    inet 198.50.241.113/24 brd 198.50.241.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe5f:f21e/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:c6:b8:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 brd 192.168.0.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fec6:b8fd/64 scope link 
       valid_lft forever preferred_lft forever
4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN 
    link/sit 0.0.0.0 brd 0.0.0.0
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none 
    inet 10.9.0.6 peer 10.9.0.5/32 scope global tun0
       valid_lft forever preferred_lft forever

答え1

残念ながら、Webツールはしばしばひどいエラーメッセージを表示します。私が知っている限り、カーネルが嫌いなのは、ゲートウェイを使用してパスを追加しようとしていますが、ゲートウェイを「ローカル」と見なさない場合です。以下を行う必要があります。

route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.9.0.2 dev tun0

または:

route add -net 192.168.0.0 netmask 255.255.255.0 dev tun0

カーネルルーティングの設定に加えて、openvpn自体にルーティングを追加する必要があります。これは、クライアントのccdファイルにある「iroute」ディレクティブを使用して行われます。

答え2

別の検索中に偶然この質問を見つけましたが、OPがアクセスしようとしました。サブネットリモートOpenVPNサーバーに接続します。

私の答えの仮説トンネルモード、いいえブリッジモデル。 (OpenVPNはルーター、一つでもない変化.)

私が正しく理解したら、--client-config-dirこの場合は(「CCD」)を使用する必要があります。routeサブネットアドレス範囲を含むデフォルト構成にはディレクティブが必要です。そしてCCDファイルの1つiroute(「i」を参照)は、次のものであると正しく識別されます。それ離れて。 (OpenVPNログを表示して認識されていることを確認し、そのパスが現在のコンピュータに存在することを確認できます。)

他のサブネットからこのサブネットにアクセスする場合(つまりOpenVPNクライアントを実行しているコンピュータではなく、返品OpenVPNコンピュータに「ゲートウェイに」トラフィックを送信するローカルサブネット内の静的ルート。これは、各クライアントコンピュータで定義することも、ローカルルータでより便利に定義することもできます。

トラフィックフローは次のとおりです。

  • リモートサブネットをpingします。
  • コンピュータまたはルータは、ゲートウェイとして機能するOpenVPNボックスにトラフィックを転送します。(機能的には、OpenVPNトンネルはルーターとして機能するためです。)
  • そのシステムの指示に従って、routeトラフィックがデバイスに送信され、tunXOpenVPN が実際にトラフィックを選択できるようになります。
  • このirouteディレクティブ(および対応するCCD)は、OpenVPNにリモートサブネットがあるかどうか、およびそれをどのリモートに送信するかを示します。(リモコンを1つだけ使用しても同じです。)
  • トラフィックはリモート側の宛先にルーティングされます。
  • そして今、すべてが逆さまに起こるはずです! リモートサブネットのIPアドレスを使用してリモートでping応答を送信し、成功する必要があります。最初からまた家。

OpenVPNに直接接続されたコンピュータからpingする場合(クライアントを実行しています)10.8.0.x、あなたの住所は次のとおりです。これさらに、アドレス範囲はすべての関連デバイスで「往復」に正常にルーティングする必要があります。

これは「デフォルトのTCP / IPルーティングの問題」であり、「問題のルータ」がOpenVPNかどうかにかかわらず発生します。ホストがお互いに正常に会話した場合(うん!)「ネットワークでは、彼らはただのルーターです。」

tcpdump(またはWireShark)はtracerouteあなたの親友です。まず、暗号化されたトラフィックがOpenVPNホスト間で移動する必要がある方法で移動することを確認する必要があります。(もちろん、内容が読めなくてもルーティングの有無はわかります。)その後、トンネル内でも同じことを行います。パケットがトンネルを通過してトンネルに到達することを確認してください。そして退いてください。 (アスタリスクが印刷され始めると、tracerouteおそらくその項目がないことを意味します。キャンセル特定の「ホップ」にルーティングします。小包がそこに着いたが、そこから家に帰る方法はなかった。 )

関連情報