
すべてのトラフィックを VPN 経由でルーティングするように OpenVPN を設定しています。すべてのトラフィックをルーティングするか、クライアントごとにそのネットワーク宛てのトラフィックのみをルーティングするかを切り替える方法があるかどうか知りたいです。
たとえば、信頼できないネットワーク上にいる場合は、すべてのトラフィックを VPN 経由でルーティングする必要があります。ただし、後で信頼できるネットワーク上にいる場合は、マシンへの SSH アクセスのみが必要になり、不必要に遅くなるためすべてのトラフィックをルーティングしたくない場合があります。
これは可能ですか?
答え1
サーバーがデフォルトルートを公開している場合は、それを無視することができます。例えば、
route delete default tun0
同様に、VPN 接続前のデフォルト ルートを復元できます。
一方、サーバーがそのようなルートを公開しない場合は、すべてのトラフィックを VPN 経由でルーティングすることを選択できますが、この場合、(a) VPN サーバーがこれに対応できる機能を備えており、トラフィックをインターネットに NAT/ルーティングして応答を処理する方法を知っていること、(b) 複数のデフォルト ルートがなく、VPN エンドポイントに到達できることを保証する必要があります。
つまり、あなたがクライアントをコントロールしていると仮定すると、とりわけルーティングテーブルを自由に設定できます。ルーティング少ないサーバーへのルーティングは、思ったよりも簡単です。もっと必要以上に協力が必要か、少なくとも能力が必要ですが、どちらも可能です。
答え2
@MadHatter が提案したルートを削除するというアイデアに基づいて、基本的に次のことを実行するエイリアスを作成しました。
sudo openvpn --config /path/to/config --route-nopull
sudo ip route add x.x.x.x/24 dev tun0
x.x.x.x/24
VPN 経由で接続している内部ネットワークのパスはどこにありますか。
これで、内部ネットワークのトラフィックのみを VPN で処理したい場合にこのエイリアスを使用し、--route-nopull
すべてのトラフィックを VPN 経由でルーティングしたい場合は、エイリアスなしの構成を使用できるようになりました。