Help us understand the problem. What is going on with this article?

OpenVPNで拠点間L2接続

More than 5 years have passed since last update.

OpenVPNで拠点間L2接続を行う方法

拠点間をVPNで繋げたいけど、DHCPサーバを別途作りたくない&リレーサーバとか面倒、ルータ越えが面倒なアプリがある等、別セグメントにしたくないあなたへ。

ネットワーク図と解説

Server側は固定IP16プラン、Client側はアドレス不定接続とした環境において、拠点間をL2VPNした時の構成を想定しています。

OpenVPN機はDebianです

OpenVPN.png

上記の通り192.168.0.0/24が拠点をまたがってあたかもひとつのスイッチにつながっているように見えます。
(10.0.0.239/28はグローバルアドレスだと思ってください)

  • OpenVPN機の物理ポート数
    今回の構成は、Client側は1ポート、Server側は2ポートを使用しています。
    TIPS: Server側で1ポートのみ、逆にClientで2ポート使う構成も可能ですので、機器や既存のネットワーク制限回避が比較的簡単です。
    1ポート構成ならば、既存のネットワークへ「ポン付け」するのも簡単でしょう。
  • 192.168.0.201に設定するdefault gateway
    冒頭でも説明したとおり単一のセグメントとなります。
    例えば192.168.0.201の機器に設定するdefault gatewayは192.168.0.109... ではありません
    192.168.0.200と通信するだけなら192.168.0.201のdefault gatewayは (=設定する必要なし)が正解です。

その他、アイデア

  • Client機にPPPoE接続接続させるようにすれば、Routerが不要になります。
  • Server機のtapデバイスを増やせば、接続拠点を増やすことができます。

設定

> Server側

$ sudo apt-get install bridge-utils openvpn easy-rsa

注: Debianはeasy-rsaがありません。openvpnの中に入っています。

証明書作成

$ sudo su -
# cp -r /usr/share/easy-rsa/ /etc/openvpn/
# cd /etc/openvpn/easy-rsa
# cat << EOT >> vars 
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Tokyo"
export KEY_CITY="Chiyoda-ku"
export KEY_ORG="CorpName"
export KEY_EMAIL="root@example.co.jp"
export KEY_OU="OUName"
EOT
# source ./vars
# ./clean-all
# ./build-ca  >>ダイアログはEnterで進める
# ./build-key-server server  >>ダイアログはEnterもしくはYで進める
# ./build-dh  >>数分かかります
# ./build-key client  >>ダイアログはEnterもしくはYで進める
# exit

注: Debianでは
# cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/としてください

$ sudo mkdir /etc/openvpn/ccd
/etc/openvpn/ccd/client
iroute 192.168.0.0 255.255.255.0
/etc/openvpn/tap0.conf
dev tap0

port 1194
tun-mtu 1400
mssfix 1280
fragment 1280

server-bridge
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem

keepalive 10 60
comp-lzo
persist-key
persist-tun

client-config-dir ccd
route 192.168.0.0 255.255.255.0

verb 3

> Client側

$ sudo apt-get install bridge-utils openvpn
$ sudo mkdir -p /etc/openvpn/keys
$ sudo chmod 700 /etc/openvpn/keys

Server側で生成した/etc/openvpn/easy-rsa/keys/{ca.crt,client.crt,client.key}をClient側の/etc/openvpn/keys/にコピー

/etc/openvpn/tap0.conf
dev tap0

tun-mtu 1400
mssfix 1280
fragment 1280

client

remote 10.0.0.234 1194
nobind

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client.crt
key /etc/openvpn/keys/client.key

comp-lzo
persist-key
persist-tun
keepalive 10 60

verb 3

起動/再接続等の運用

起動など

$ sudo service openvpn start|stop|reload|restart

注意: OpenVPNの接続越しにOpenVPN自体の設定変更をするときは、接続が切れたりすることがあるので原則として行わないのが吉です。
この辺、いい方法が無いのでしょうか。。。nohupとかでなんとかなるのかな?

ログ

/var/log/daemon.log

再接続

OpenVPNの/etc/openvpn/*.conf内のkeepaliveで設定
再接続に要する時間は、概ねkeepaliveの設定時間通りです。

転ばぬ先の杖

br0にアドレスを割り当てている関係上、brctlコマンドの使い方によってはssh接続等ができなくなり、いわゆる詰んだ状態となります。
→ 対策: シリアル接続できるようにしておきましょう

パフォーマンス

TODO(レイテンシ、スループット)

あとがき

疲れた。

ma2shita
Kohei MATSUSHITA / ソラコムのテクノロジー・エバンジェリスト。IoTの活用方法を中心に技術情報を日々紹介してます。年間登壇は140回超、共著には「公式ガイドブック SORACOM プラットフォーム」やLPWAの選び方を書いてます。"Max"はニックネームです、フォローやメッセージはお気軽にどうぞ!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした