web-dev-qa-db-ja.com

tunインターフェースにバインドするプロセスに対してのみトラフィックをプロキシするようにopenvpnを設定するにはどうすればよいですか?

特定のプロセスからのトラフィックのみがVPNを通過するように、openvpnを構成しようとしていますが、それらのプロセスはどこにでも接続できます。

Openvpnにルート設定を行わせず(_--route-noexec_)、アプリケーションをtunインターフェイスに明示的に接続させる(例:_curl --interface tun0 'http://www.ipchicken.com'_)ことでそれを行おうとしていますが、connect()のようですタイムアウトします。

Tunインターフェースを幸せにするために私がしなければならない他のステップはありますか?

5
bobpoekert

route-nopull

http://openvpn.net/index.php/open-source/documentation/manuals/69-openvpn-21.html

--clientまたは--pullとともに使用する場合、ルートを除いてサーバーによってプッシュされたオプションを受け入れます。このオプションをクライアントで使用すると、サーバーはクライアントのルーティングテーブルにルートを追加できなくなりますが、このオプションを使用すると、サーバーはクライアントのTUN/TAPインターフェイスのTCP/IPプロパティを設定できます。

そのため、OpenVPN構成ファイルにroute-nopullを追加します。 cURL/PHPを使用したOpenVPNVPN の使用方法に関する投稿を書きました。

1
georgiecasey

tun0インターフェイスからのパケットに別のルーティングテーブルを使用することで、これを実現できます。

# ip route add $VPN_NETWORK dev tun0
# ip route add default via $VPN_GATEWAY_IP table 1
# ip rule add iif tun0 table 1

最初のルートはデフォルトテーブル(テーブル254)に入り、2番目はテーブル2に入り、3行目はtun0インターフェイスから2番目のルーティングテーブルにパケットをバインドします。このテーブルに/etc/iproute2/rt_tablesで名前を付けることができます。

# echo '1 vpn' >> /etc/iproute2/rt_tables

VPNゲートウェイが10.8.0.1/16の場合は、次のように入力する必要があります。

# ip route add 10.8.0.0/16 dev tun0
# ip route add default via 10.8.0.1 table vpn
# ip rule add iif tun0 table vpn

これはPolicy Routingと呼ばれ、これを機能させるには、カーネル構成でCONFIG_IP_MULTIPLE_TABLEを有効にする必要があります。

2
Marin Hannache