したがって、パブリック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サーバー自体にルーティングしようとしているため、ある種の無限ループを形成している可能性があると考えましたが、これは単なる推測です。
表示したルーティングテーブルは、最初の行に示されているように、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が含まれている場合は、これで完了です。