OpenVPNで拠点間VPNを張る

OpenVPN を使ってLAN同士を繋ぐ、いわゆる拠点間VPNを作る。やり方を忘れないためのメモエントリー。

拠点間VPNなので、

  1. Point-to-pointで張り、通すプロトコルはIPだけでいいので、TUNデバイスを使う。
  2. 前に作ったオレオレ認証局 で公開鍵認証を行う。
  3. 拠点甲(サーバ側)のネットワークは 192.168.1.0/24
  4. 拠点乙(クライアント側)のネットワークは 192.168.2.0/24
  5. POINTOPOINT で使うIPアドレスは 192.168.100.1 & 2

拠点甲

接続を待ち受ける側。

まず、証明書を作る。それぞれ server.crt と server.key

tls-server
proto udp
port 5000

dev tun
comp-lzo

dh /etc/ssl/dh2048.pem
ca /etc/ssl/cacert.pem
cert server.crt
key server.key

ifconfig 192.168.100.1 192.168.100.2
route 192.168.2.0 255.255.255.0
push "ifconfig 192.168.100.2 192.168.100.1"
push "route 192.168.1.0 255.255.255.0" 

keepalive 10 60
ping-timer-rem
persist-key
persist-tun

user openvpn
group openvpn

verb 3
mute 10

ポイント:

  • tls-server — TLSサーバ
  • dev tun — TUNデバイス (Point-to-point) を使用
  • ifconfig — ローカルとピアのIPアドレスを設定
  • route — ルーティングの作成 (ip route add 192.168.2.0/24 via 192.168.100.2 と同じ)
  • push — 拠点乙のIPアドレス・ルーティング設定をここで書く。乙は pull で呼び出す。

あとは起動

# /etc/init.d/openvpn start

拠点乙

甲に接続する側。

こちらも証明書を作る。CSRと鍵の生成は必ず証明書を使うマシンで行う。こうすることで鍵ファイルを受け渡さなくて済む。あと、甲のCA証明書 (cacert.pem) をコピーして、/etc/openvpn/cacert.pem に保存。

tls-client
remote *****.tietew.jp
proto udp
port 5000
dev tun
comp-lzo

nobind
pull

dh /etc/ssl/dh2048.pem
ca cacert.pem
cert client.crt
key client.key

keepalive 10 60
ping-timer-rem
persist-tun
persist-key

user openvpn
group openvpn

verb 3
mute 10

ポイント:

  • tls-client — TLSクライアント
  • remote — 接続先(拠点甲)
  • nobind — UDPポートをbindしない。
  • pull — サーバ側の push を受け取る。これでIPアドレスやルーティングを設定できる。

こんな感じになっていればオッケー(これは甲のほう)

# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:192.168.100.1  P-t-P:192.168.100.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:635290 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1218418 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:26877015 (25.6 MiB)  TX bytes:1134325226 (1.0 GiB)

いつも思うけどPOINTOPOINTという単語が謎。

カテゴリー: memo   パーマリンク

コメントは受け付けていません。