前提・実現したいこと
OpenVPNを用いて拠点間VPNを構築しようと試みています。
具体的には下の図のようにVPNサーバ・VPNクライアントとなるサーバでOpenVPNを稼働させ、VPNトンネルを張ります。
VPNサーバとVPNクライアントにはそれぞれ端末1,端末2がぶら下がる状態となっており、この端末1,2間で通信できるようにしたいです。
各ホストの持つNICと設定されているIPアドレスは図の通りです。
試したこと
上の図のうち、VPNトンネル自体と一部のルーティング設定はできているようで次の組み合わせでpingが通ることは確認しています。
VPNサーバ
->VPNクライアント
(VPNサーバー上で ping 10.8.0.6, ping 172.16.0.105 を実行)VPNクライアント
->VPNサーバ
(VPNクライアント上で ping 10.8.0.1, ping 10.0.0.101 を実行)VPNクライアント
->端末1
(VPNクライアント上で ping 10.0.0.102 を実行)
しかしながら、次のようなpingが通りません。
端末1
->VPNクライアント
(端末1上で ping 172.16.0.105 を実行)
各ホストには下に記載するような設定を入れているのですが、VPNサーバのfirewalldの設定か端末1のルーティング設定に誤りがあるのではないかと考えています。
どのように設定するべきかご教示いただけないでしょうか。
各ホストの設定内容
VPNサーバの設定内容
OpenVPNの設定(抜粋)
dev tun server 10.8.0.0 255.255.255.0 push "route 10.0.0.0 255.255.255.0" route 172.16.0.0 255.255.255.0 keepalive 10 120 client-to-client client-config-dir /etc/openvpn/ccd client-configとして下記を指定 iroute 172.30.9.0 255.255.255.0
ルーティングテーブル
$ ip route default via 10.0.0.1 dev eth0 proto dhcp metric 100 10.0.0.1 dev eth0 proto dhcp scope link metric 100 10.0.0.101 dev eth0 proto kernel scope link src 10.0.0.101 metric 100 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 172.16.0.0/24 via 10.8.0.2 dev tun0
firewalld (NAT)設定
$ echo 1 > /proc/sys/net/ipv4/ip_forward $ firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i tun+ -o eth0 -j ACCEPT $ firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o tun+ -j ACCEPT $ firewall-cmd --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
VPNクライアントの設定内容
ルーティングテーブル
$ ip route default via 172.30.9.1 dev eth0 proto dhcp metric 100 10.0.0.0/24 via 10.8.0.5 dev tun0 10.8.0.0/24 via 10.8.0.5 dev tun0 10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6 172.16.0.1 dev eth0 proto dhcp scope link metric 100 172.16.0.105 dev eth0 proto kernel scope link src 172.16.0.105 metric 100
firewalld (NAT)設定
$ echo 1 > /proc/sys/net/ipv4/ip_forward $ firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i tun+ -o eth0 -j ACCEPT $ firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o tun+ -j ACCEPT $ firewall-cmd --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
端末1の設定内容
設定前のルーティングテーブル
$ ip route default via 10.0.0.1 dev eth0 proto dhcp metric 100 10.0.0.1 dev eth0 proto dhcp scope link metric 100 10.0.0.102 dev eth0 proto kernel scope link src 10.0.0.102 metric 100
上の状態の時に、追加で次のように設定
$ ip route add 10.0.0.0/24 dev eth0 table 1000 $ ip route add 172.16.0.0/24 via 10.0.0.101 table 1000 $ ip route show table 1000 $ ip rule add to 172.16.0.0/24 table 1000 priority 100 $ ip route flush cache
172.16.0.0/24への通信の時のみVPNトンネルを通したいと思い設定してみたのですが、ここに誤りがあるんだと思います。
補足情報
- VPNサーバ・クライアント、端末1・2は全て CentOS 7.7.1908 で試しています
あなたの回答
tips
プレビュー