質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
OpenVPN

OpenVPNは、暗号化してサーバ間を繋ぐVPNソフトウェア。OSSで開発されており、負荷分散やフェイルオーバー、もしくは細かなアクセス権設定の実装もできます。様々なOSに移植され、各OS上での利用が可能です。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

0回答

1257閲覧

VPNとルーティング設定がうまく機能しない

ariwara

総合スコア4

OpenVPN

OpenVPNは、暗号化してサーバ間を繋ぐVPNソフトウェア。OSSで開発されており、負荷分散やフェイルオーバー、もしくは細かなアクセス権設定の実装もできます。様々なOSに移植され、各OS上での利用が可能です。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

1クリップ

投稿2020/01/10 08:58

前提・実現したいこと

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 で試しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問