これは私の設定です。
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_filter
2
/etc/sysctl.conf
sysctl -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.10
、10.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が非表示になるため、受け入れられなくなります。