iptables ルーティング/NATing 2 VPN の使用

iptables ルーティング/NATing 2 VPN の使用

これは私の設定です。

Internet - router - Unix router - VPN1
                                - VPN2

router: 192.168.2.1/24
Unix router: 192.168.2.55/24
VPN1: 10.0.1.0/24 (Unix router: 10.0.1.10)
VPN2: 10.0.2.0/24 (Unix router: 10.0.2.10)

私が何を試しても、直接接続を介しても、1つのVPNまたは別のVPNからいくつかのパケットが間違った方向に転送され続けます。私は成功せずにconnmarkを使ってみました。

私のUnixルーターのデフォルトの発信接続にはVPNではなく直接接続が必要です。

また、VPNからUnixルーターにいくつかのトラフィックを転送できるようにしたいです。ここで、逆方向パスを適切に制御することが複雑になります。

VPNサーバーが192.168.2.0/24 LANにアクセスできるかどうかは問題ではありませんが、そうであれば良いでしょう。

iptables誰でもこれを使用するか、正しい方向に私を指すことができますかiproute2

iroute現在のOpenVPNオプションセットの結果は次のとおりです。

 # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp4s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:4e:3d:8a brd ff:ff:ff:ff:ff:ff
3: enp4s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:4e:3d:8b brd ff:ff:ff:ff:ff:ff
4: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:23:54:27:2b:c5 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::223:54ff:fe27:2bc5/64 scope link
       valid_lft forever preferred_lft forever
5: br0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:23:54:27:2b:c5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.55/24 brd 192.168.2.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::223:54ff:fe27:2bc5/64 scope link
       valid_lft forever preferred_lft forever
6: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:7d:a4:f6 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe7d:a4f6/64 scope link
       valid_lft forever preferred_lft forever
7: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:41:24:60 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe41:2460/64 scope link
       valid_lft forever preferred_lft forever
18: tun2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.0.2.10 peer 10.0.2.1/32 scope global tun2
       valid_lft forever preferred_lft forever
19: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.0.1.10 peer 10.0.1.1/32 scope global tun1
       valid_lft forever preferred_lft forever

 # ip route
default via 192.168.2.1 dev br0  metric 5
10.0.1.0/24 via 10.0.1.1 dev tun1
10.0.1.0/24 via 10.0.2.1 dev tun2
10.0.1.1 dev tun1  proto kernel  scope link  src 10.0.1.10
10.0.2.0/24 via 10.0.1.1 dev tun1
10.0.2.0/24 via 10.0.2.1 dev tun2
10.0.2.1 dev tun2  proto kernel  scope link  src 10.0.2.10
104.223.87.195 via 192.168.2.1 dev br0
192.168.2.0/24 dev br0  proto kernel  scope link  src 192.168.2.55
204.44.85.107 via 192.168.2.1 dev br0

答え1

まず、私の主な質問はであり、設定する必要がありnet.ipv4.conf.default.rp_filterます。リアルタイムで確認および変更し、変更を適用するために活用します。net.ipv4.conf.all.rp_filter2/etc/sysctl.confsysctl -p /etc/sysctl.conf

つまり、戻りトラフィックを制御する完全なソリューションは、まず次の接続を追跡することですconnmark

iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark ! --mark 0x0 -j ACCEPT
iptables -t mangle -A PREROUTING -i tun1 -j MARK --set-xmark 0x1
iptables -t mangle -A PREROUTING -i tun2 -j MARK --set-xmark 0x2
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark

次に、ポリシーベースのルーティングを設定する必要があります。 2つの新しいルーティングテーブルを定義する必要があります/etc/iproute2/rt_tables。たとえば、次のようになります。

101     VPN1
102     VPN2

次に、各テーブルで双方向パスを作成します。私の場合、私が受け取ったVPNクライアントIPはであり10.0.1.1010.0.2.10ローカルネットワークインターフェイスはでした192.168.2.55。だから私はこうします:

ip route add 192.168.2.0/24 via 192.168.2.55 table VPN1
ip route add 192.168.2.0/24 via 192.168.2.55 table VPN2

次に、タグセットに基づいて次の表に従うようにルールを設定します。

ip rule add fwmark 1 table VPN1
ip rule add fwmark 2 table VPN2

最後に、VPNでupscript.shデフォルトゲートウェイを設定しました。

ip route add default via 10.0.1.1 table VPN1

.. VPN1の場合と

ip route add default via 10.0.2.1 table VPN2

..VPN2の場合。

VPNサーバーがトラフィックをLANに直接ルーティングできるようにするには、各サーバー()とその構成ファイル( 'openvpnserver.conf`)でirouteそのクライアントのOpenVPNディレクティブを使用する必要があります。ccd/client

VPNを実行すると、トラフィックは常に元の場所に戻る必要があります。

VPNサーバーでリバースマスカレーディングを実行することは可能ですが、これによりソースIPが非表示になるため、受け入れられなくなります。

関連情報