概要
VyOSのOpenVPNは、UDPだけでなくTCPを使用することも可能。
TCP接続を使用することで、ファイアウォールの通過が容易になったり、特定のポート(例:443)を利用して通信をカプセル化したりできる利点がある。
以下に、接続を待ち受けるPassive側と、接続を開始するActive側の設定例をまとめる。
実行バージョン:Vyos1.4
前提条件
今回の設定はトンネル自体はipv4で接続を行い、ipv4のトンネルの中にipv6の通信を通す。という形になる。そのため、vtun0のlocalhostにはグローバルIPが設定されていない。
1.共通設定:共有鍵(Shared Secret)の生成
両拠点で同じ鍵を使用する必要があります。
set pki openvpn shared-secret vpn-key key '共通鍵...(省略)'
set pki openvpn shared-secret vpn-key version '1'
事前共通鍵は基本的には非推奨。本当は別の方法が行った方が良い
2. Passive側(拠点A:接続待機)の設定
外部からのTCP接続を待ち受けるルーターの設定です。protocol tcp-passiveを指定します
openvpn インターフェース設定。tcpのパッシブモードで、local-hostに自身のグローバルIPを指定する。
set interfaces openvpn vtun0 mode 'site-to-site'
set interfaces openvpn vtun0 protocol 'tcp-passive'
set interfaces openvpn vtun0 local-host 'xxx.yy.zzz.250'
set interfaces openvpn vtun0 local-port '443'
トンネル内IPアドレス設定。
local-addressと、remote-addressで、今回v4とv6で二つのIPを追加している。トンネル間の通信用に接続するプライベートIPをここで利用する。
set interfaces openvpn vtun0 local-address 192.168.85.2
set interfaces openvpn vtun0 remote-address '192.168.85.3'
set interfaces openvpn vtun0 local-address fd00:85::2
set interfaces openvpn vtun0 remote-address 'fd00:85::3'
認証と永続化の設定
set interfaces openvpn vtun0 shared-secret-key 'vpn-key'
set interfaces openvpn vtun0 persistent-tunnel
Active側(拠点B:接続開始)の設定
Passive側へ向けて接続を開始するルーターの設定です。protocol tcp-activeを指定します
OpenVPNインターフェース設定
xxx.yy.zzz.250には、対向のグローバルIPを入れる。
set interfaces openvpn vtun0 mode 'site-to-site'
set interfaces openvpn vtun0 protocol 'tcp-active'
set interfaces openvpn vtun0 remote-host 'xxx.yy.zzz.250'
set interfaces openvpn vtun0 remote-port '443'
トンネル内IPアドレス設定
set interfaces openvpn vtun0 local-address 192.168.85.3
set interfaces openvpn vtun0 remote-address '192.168.85.2'
set interfaces openvpn vtun0 local-address fd00:85::3
set interfaces openvpn vtun0 remote-address 'fd00:85::2'
以下の内容はもう片方のvyosと一緒の設定である。
認証と永続化の設定
set interfaces openvpn vtun0 shared-secret-key 'vpn-key'
set interfaces openvpn vtun0 persistent-tunnel
ルーティングの設定
トンネルを介して通信するために、スタティックルートを設定する。
Passive側からActive側へのルート
set protocols static route 192.168.86.3/32 interface vtun0
Active側からPassive側へのルート
set protocols static route 192.168.85.2/32 interface vtun0
注意点
TCP over TCP(TCPトンネルの中でTCP通信を行う)の状態になると、パケットの断片化によりパフォーマンスが低下したり、接続が不安定になったりすることがあるらしい。 これを防ぐために、MSSクランプの設定が推奨されている。
MSSをPMTUに合わせて自動調整する設定
set interfaces openvpn vtun0 ip adjust-mss 'clamp-mss-to-pmtu'
set interfaces openvpn vtun0 ipv6 adjust-mss 'clamp-mss-to-pmtu'
確認コマンド
サイト間VPNの状態表示
show openvpn site-to-site
vyos@bgp-neginoc-01:~$ show openvpn site-to-site
OpenVPN status on vtun0
Client CN Remote Host Tunnel IP Local Host TX bytes RX bytes Connected Since
----------- ------------- ----------- ------------------ ---------- ---------- -----------------
N/A N/A N/A 実行元のグローバルIP:443 1.3 GB 1.3 GB N/A
vyos@bgp-neginoc-01:~$
OpenVPNのログ確認
show log openvpn
