openvpnクライアントを通過するトラフィックだけをルーティングする方法は?

openvpnクライアントを通過するトラフィックだけをルーティングする方法は?

VPNクライアントを通過するトラフィックを除くすべてのトラフィックをルーティングしたいと思いますcomputer_X(より簡単な場合は、クライアントにVPNサーバーをインストールすることもできます)。

デフォルトでは、着信接続(たとえば、Webサーバー:80、:443、またはssh:22への要求)はまだWANインターフェイスを介してルーティングされますが、発信接続(たとえば、私:80の要求)はcomputer_XVPNクライアントを介してルーティングされます。する必要があります。

常に使用するルールを追加しましたWANゲートウェイ内から始まるパケットのデフォルトパスWANインターフェース。望むより:

# ip route show table 42
default via WAN_GATEWAY dev eth0 

# ip rule list
0:      from all lookup local 
32765:  from WAN_IP lookup 42
32766:  from all lookup main 
32767:  from all lookup default 

# ip r
default via WAN_GATEWAY dev eth0 onlink 
10.8.0.0/24 via 10.8.0.2 dev tun0 
10.8.0.2 dev tun0  proto kernel  scope link  src 10.8.0.1 
WAN_SUBNET/26 via WAN_GATEWAY dev eth0 
WAN_SUBNET/26 dev eth0  proto kernel  scope link  src WAN_IP 

# ip a
eth0: inet WAN_IP ...
tun0: inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0

今私のルートを通過するすべてのトラフィックをルーティングしたいと思います。Tun0ip route add default via 10.8.0.1しかし、トンネル自体をルーティングできないのでできませんか?

しかし、おそらくデフォルトパスを引き続き使用できます。

ip route default via 10.8.0.1

しかし、このようにVPN接続のための特定のルートを作成しますか?

ip route add table 32 default via WAN_IP
ip rule add from 10.8.0.0/8 table 32

VPNが独自にルーティングされないことを防ぐことができることを願っています。

または、10.8.0.0/8を除くすべてのサブネットへのすべてのルートを手動で追加する必要があります(トンネルがそれ自体でトンネリングしないようにするため)。

ip route add 128.0.0.0/1  via 10.8.0.1
ip route add 64.0.0.0/2 via 10.8.0.1
ip route add 32.0.0.0/3 via 10.8.0.1
ip route add 16.0.0.0/4 via 10.8.0.1
ip route add 12.0.0.0/6 via 10.8.0.1
ip route add 11.0.0.0/7 via 10.8.0.1
ip route add 9.0.0.0/8 via 10.8.0.1

答え1

OpenVPN はデフォルトで、デフォルトルートテーブルの OpenVPN サーバにルートを追加します。最も一致するルールに従ってルーティング決定が行われ、一致するルールがない場合はデフォルトゲートウェイが使用されます。 OpenVPNサーバーにはより正確なルールがあるため、デフォルトパスの代わりに使用されます。

OpenVPNを介してすべてのトラフィックをルーティングするには、デフォルト設定を使用してから特別なケースの例外を設定する必要があります。

個別に設定できます。ネットワークネームスペース独自のルーティング構成を持ち、その中でサービスを実行します。これを行うには、名前空間に別々のIPアドレスを割り当てるか、名前空間間でNAT設定を使用する必要があります。

別々のネットワークネームスペースに代わるものは、以下を使用することです。ポリシールーティングパケットタグを含む。

送信元ポートから着信パケットをiptables表示するために使用されます。1080第443話そして番号22:

iptables -t mangle -A OUTPUT -p tcp -m multiport --sports 80,443,22 -j MARK --set-mark 10

ルーティングテーブルを設定します。デフォルトルートテーブルを使用したOpenVPN設定(トンネル自体を除くOpenVPNトンネルを通過するすべてのトラフィック)タグ付きトラフィックには別々のルーティングテーブルがあります。

# add new routing table 100 and set its default routing to your default gw
ip route add table 100 default via $DEFAULT_GW

# add rule to use the new table for packets marked 10
ip rule add fwmark 10 table 100

# flush routing cache
ip route flush cache

関連情報