web-dev-qa-db-ja.com

VPN自体を介してopenvpn-serverトラフィックをルーティングする方法

したがって、パブリックIPアドレスが101.102.103.104のサーバーがあります(たとえば)。このサーバーは、openvpnサーバーに加えて、パブリックIPネットワークデバイスポートでリッスンしている他の多くのものを実行しています。

私がやりたいのは、一度101.102.103.104に接続し、今後のすべてのトラフィックをVPN経由でこのIPにルーティングすることです。

したがって、たとえば、私がcurl 101.102.103.104:8080の場合、VPN接続を経由します。

次のように、server.confにPush routeを追加してみました。

Push "route 101.102.103.104 255.255.255.255"

そして私は除外ルートを追加しようとしました:

Push "route 101.102.103.104 255.255.255.255 net_gateway"

しかし、私はうまくいかなかったようです。 Sudo route -nを実行すると、ホームルーターを経由するルートが表示されます。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
101.102.103.104  192.168.1.1     255.255.255.255 UGH   0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0

これをどのように達成できるかについて何か考えはありますか?問題は、トラフィックをvpnサーバー経由でvpnサーバー自体にルーティングしようとしているため、ある種の無限ループを形成している可能性があると考えましたが、これは単なる推測です。

3

表示したルーティングテーブルは、最初の行に示されているように、VPNを介してすべてのトラフィックをルーティングするわけではありません。現在の構成では、クライアントがLANにアクセスできるようにするだけです。

サードパーティ(つまり、VPNサーバーのLANではない)へのすべてのトラフィックを含む、OpenVPNを介してすべてのクライアントトラフィックをルーティングするコマンドは

  Push "redirect-gateway def1"

これはサーバー構成ファイルに追加されます(変更を有効にするには、OpenVPNプログラムを再起動する必要があります)。

また、ブリッジされたものではなく、ルーティングされたOpenVPNをセットアップしたので、サーバーでNATをアクティブにする必要があります。

  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

これは、インターネット上のOpenVPNサーバーのインターフェース(つまり IPアドレス101.102.103.104のインターフェース)がethと呼ばれることを前提としています。それに応じて調整してください。

構成を確認するには、OpenVPNサーバーへの接続が確立されたら、次のコマンドを発行します。

 wget 216.146.39.70:80 -O - -o /dev/null

これにより、見かけのIPアドレスが出力されます。出力に101.102.103.104が含まれている場合は、これで完了です。

1
MariusMatutiae