2つのインターフェースを介したルーティング

2つのインターフェースを介したルーティング

KVM仮想化とUbuntu 20.04 LTSを搭載したVPS A

VPNサーバー:10.29.0.0/24

KVM仮想化を含むVPS B、VPS AのUbuntu 20.04 LTSを含む
VPNクライアント:10.29.0.19
VPNサーバー:10.8.0.0/24

VPS Aを制御せず、VPNクライアント間の通信を可能にするVPNサーバーとして機能します。

VPS B自体のコマンドラインから、VPS AのVPNサーバー上のすべてのクライアントにpingを送信できます。

root@vpsB:~# ping 10.29.0.1
PING 10.29.0.1 (10.29.0.1) 56(84) bytes of data.
64 bytes from 10.29.0.1: icmp_seq=1 ttl=64 time=3.09 ms
64 bytes from 10.29.0.1: icmp_seq=2 ttl=64 time=3.10 ms
^C
--- 10.29.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 3.091/3.094/3.097/0.003 ms
root@vpsB:~# ping 10.29.0.5
PING 10.29.0.5 (10.29.0.5) 56(84) bytes of data.
64 bytes from 10.29.0.5: icmp_seq=1 ttl=64 time=59.8 ms
64 bytes from 10.29.0.5: icmp_seq=2 ttl=64 time=60.0 ms
^C
--- 10.29.0.5 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 59.761/59.877/59.994/0.116 ms
root@vpsB:~# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever

       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:00:3c:a2:85:61 brd ff:ff:ff:ff:ff:ff
    inet 217.XXX.XXX.111/24 brd 217.XXX.XXX.255 scope global eth0
       valid_lft forever preferred_lft forever
    
3: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun1
       valid_lft forever preferred_lft forever
    
4: tun3: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none
    inet 10.29.0.19/24 brd 10.29.0.255 scope global tun3
root@vpsB:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         217.XXX.XXX.1   0.0.0.0         UG    0      0        0 eth0
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun1
10.29.0.0       0.0.0.0         255.255.255.0   U     0      0        0 tun3
217.XXX.XXX.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
root@vpsB:~# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT

10.8.0.0/24から10.29.0.0/24にpingするにはどうすればよいですか?

ベストアンサー1

iptablesルールは上から下に処理されます。 (あなたが持っているもの)には、VPS-B並べ替える必要がある既存のNATルールがすでにあります。 NATルールを並べ替えるには、既存のルールをテキストエディタにコピーしてから既存のルールを削除する必要があります。次に、NATルールを正しい順序で再追加します。

手順は次のとおりです。

既存のNATチェーンルールを表示(削除前):

sudo iptables -t nat -L -n --line-numbers

ルールをテキストエディタに保存

既存のNATルールを削除します。

sudo iptables -t nat -D POSTROUTING 1

すべてのNATルールが削除されるまで上記のコマンドを繰り返します。次に、NAT ルールを再度追加します。

まず、次の規則を適用する必要があります(残りのNAT規則はそれに従います)。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 10.29.0.0/24 -o tun3 -j MASQUERADE

ルールの順序が正しいことを確認してください。

sudo iptables -t nat -L -n --line-numbers

VPS-Bはすでに相互接続されているため、10.8.0.0/24この10.29.0.0/24サーバーには追加のルーティングステートメントは必要ありません。

VPS-BをVPNサーバーとして使用するVPNクライアントは、VPNサーバー(10.8.0.1)をサブネットのネクストホップとして使用するように指示します。10.29.0.0/24

sudo ip route add 10.29.0.0/24 via 10.8.0.1

すべてが正常に機能する場合は、VPS-Bサーバーにiptablesルールを保存することを検討してください。ガイドはここ

おすすめ記事