ITエンジニアのコツコツ日記

ITエンジニアの雑記です

ヤマハルータ(RTX830)とVyOSでIPSecで拠点間VPNする

RTX830とVyOSのIPSec設定

VyOSのIPSecの接続事例があまりなく、VPN構築をした際に苦戦したので記録を残します。

前提情報

  • RTX830側
    • PPPoE接続
    • VPNLAN: 192.168.10.0/24
    • インタフェース: 192.168.10.1/24
  • VyOS側
    • さくらVPNグローバルIPをeth0が所持
    • VPNLAN: 192.168.100.0/24
    • インタフェース: 192.168.100.1/24

192.168.10.0/24192.168.100.0/24の拠点間VPNをやります。

RTX830側の設定

console character en.ascii
login timer 300
ip routing on
ip route default gateway pp 1
ip route 192.168.100.0/24 gateway tunnel 1
ip lan1 address 192.168.10.1/24
pp select 1
 pppoe use lan2
 pp auth accept pap chap
 pp auth myname <PPPoEセッション情報>
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp mtu 1454
 ip pp nat descriptor 1
 netvolante-dns hostname host pp server=1 <ネットボランチDDNS>
 pp enable 1
tunnel select 1
 ipsec tunnel 1
  ipsec sa policy 1 1 esp 3des-cbc md5-hmac
  ipsec ike group 1 modp1024
  ipsec ike keepalive log 1 off
  ipsec ike keepalive use 1 off
  ipsec ike local address 1 192.168.10.1
  ipsec ike nat-traversal 1 on
  ipsec ike pre-shared-key 1 text <Secret>
  ipsec ike remote address 1 <VyOSのIPアドレスまたはドメイン>
 ip tunnel tcp mss limit auto
 tunnel enable 1
 tunnel select none
nat descriptor type 1 masquerade
nat descriptor masquerade static 1 1 192.168.10.1 udp 500
nat descriptor masquerade static 1 2 192.168.10.1 esp
nat descriptor masquerade static 1 3 192.168.10.1 udp 4500
ipsec auto refresh on
telnetd host lan
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.10.11-192.168.10.199/24
dhcp scope option 1 dns=8.8.8.8
dns server pp 1
dns private address spoof on
statistics traffic on

VyOS側の設定

set interfaces ethernet eth0 <VyOSのグローバルIP>
set interfaces ethernet eth1 192.168.100.1/24
set service ssh port 10022
set service ssh allow-root
set system gateway-address <VyOSのゲートウェイアドレス>
### vpn settings
set vpn ipsec ipsec-interfaces interface 'eth0'
set vpn ipsec esp-group ESP compression 'disable'
set vpn ipsec esp-group ESP mode tunnel
set vpn ipsec esp-group ESP pfs enable
set vpn ipsec esp-group ESP lifetime '3600'
set vpn ipsec esp-group ESP proposal 1 encryption 3des
set vpn ipsec esp-group ESP proposal 1 hash md5
set vpn ipsec ike-group IKE ikev2-reauth no
set vpn ipsec ike-group IKE key-exchange 'ikev1'
set vpn ipsec ike-group IKE lifetime '3600'
set vpn ipsec ike-group IKE proposal 1 dh-group 2
set vpn ipsec ike-group IKE proposal 1 encryption 3des
set vpn ipsec ike-group IKE proposal 1 hash md5
set vpn ipsec ike-group IKE dead-peer-detection action restart
set vpn ipsec ike-group IKE dead-peer-detection interval 15
set vpn ipsec ike-group IKE dead-peer-detection timeout 90
set vpn ipsec site-to-site peer <RTX830のアドレス> default-esp-group 'ESP'
set vpn ipsec site-to-site peer <RTX830のアドレス> ike-group 'IKE'
set vpn ipsec site-to-site peer <RTX830のアドレス> authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer <RTX830のアドレス> authentication pre-shared-secret <シークレットキー>
set vpn ipsec site-to-site peer <RTX830のアドレス> authentication remote-id 192.168.10.1
set vpn ipsec site-to-site peer <RTX830のアドレス> connection-type initiate
set vpn ipsec site-to-site peer <RTX830のアドレス> local-address <VyOSのグローバルIP>
set vpn ipsec site-to-site peer <RTX830のアドレス> tunnel 1 local prefix '192.168.100.0/24'
set vpn ipsec site-to-site peer <RTX830のアドレス> tunnel 1 remote prefix '192.168.10.0/24'
set vpn ipsec nat-networks allowed-network 0.0.0.0/0
set vpn ipsec nat-traversal enable

VyOSとの接続におけるノウハウ

IPSec接続が確立しない

RTX830側のIPSec設定でGUIから設定すると以下の設定が追加されるが、この記述があるとIPSecの接続確立が失敗した。

 ppp ccp type none

VyOS側がRTX830側のグローバルIP変更に対応できない

RTX830側のPPPoEは固定グローバルIPではなく、動的グローバルIPのため、ヤマハのネットボランチDDNSサービスを利用した。

VyOSとRTX830でIPSecVPN確立後にRTX830を再起動するとRTX830が持つグローバルIPが変わる。

DDNSが動作しているので、問題なく名前解決するIPアドレスは変わるが、VyOS側は一度セッション確立に使ったグローバルアドレスをずっと保持し続けるようだ。

このため、定期的にipsecプロセスを再起動させる必要があるため、以下をVyOSに追加した。

$ vpn ipsec auto-update 30

30秒おきにipsecプロセスを再起動する処理。

以上