🥌

さくらVPS上のUbuntu 24とNEC IX2215間でIPv4 over IPv6 IKEv2/IPsec VPNする

に公開

はじめに

本記事では、さくらVPSとフレッツ光 (IPv6 IPoE) 間で、IPv6ネットワークを経由してIPv4プライベートネットワーク同士を接続する IPv4 over IPv6 IKEv2/IPsec VPN の構築例を紹介します。

フレッツ光のPPPoE接続によるIPv4アドレスは変動する可能性がありますが、IPoE接続によるIPv6アドレスは (VNE事業者を変える等しない限り) 半固定的に扱えるため、固定IPv6アドレスとして扱うことができます。DDNS等を利用せずに比較的安定したVPN接続が可能です。

前提条件

イニシエータ レスポンダ
機種 Ubuntu 24.04 on さくらVPS NEC UNIVERGE IX2215
バージョン Ubuntu 24.04.3 LTS IX2215 10.11.9
IPv6アドレス 2401:2500:102::52 2409:10:2900::1
IPv4 プライベートアドレス 192.168.18.10/24 192.168.19.1/24

Ubuntu 24 (さくらVPS上) の設定

前提条件

  • IPv6有効化
    • さくらVPSでIPv6の設定がされていること (参照: IPv6有効化 (manual.sakura.ad.jp))
  • IPv4ルーティング有効化
    • IPv4ルーティングが有効になっていること (net.ipv4.ip_forward=1)

strongSwanインストール

sudo apt install charon-systemd strongswan-swanctl

ループバックインターフェース上にサブネット (192.168.18.0/24) 作成

ループバックインターフェース (lo) 上にサブネット (192.168.18.0/24) を作成します。このサブネットがさくらVPS側のプライベート側ネットワークとして扱われます。

/etc/netplan/99-local.yaml
network:
  version: 2
  ethernets:
    lo:
      addresses:
        - 192.168.18.10/24

設定を適用します。

sudo netplan apply

ファイアウォール設定

IX2215のIPv6アドレスからのIKEv2 (UDP 500) およびIPsec (ESP) 通信を許可します。

sudo ufw allow proto udp from 2409:10:2900::1 to any port 500
sudo ufw allow proto esp from 2409:10:2900::1 to any

strongSwan設定

Pre-Shared Key (事前共有鍵) が含まれているので、ファイルのパーミッションを適切に設定してください。

/etc/swanctl/conf.d/home.conf
connections {
  home {
    local_addrs = 2401:2500:102::52
    remote_addrs = 2409:10:2900::1
    local {
      auth = psk
      id = 2401:2500:102::52
    }
    remote {
      auth = psk
      id = 2409:10:2900::1
    }
    children {
      v4-tunnel {
        remote_ts = 192.168.19.0/24
        local_ts = 192.168.18.0/24
        start_action = start
        esp_proposals = aes256-sha512-modp3072
      }
    }
    version = 2
    mobike = no
    proposals = aes256-sha512-modp3072
  }
}

secrets {
  ike-home-psk {
    id = 2409:10:2900::1
    secret = secret1
  }
}

IX2215の設定

! デバッグ用にIKEv2のログレベルを上げる
logging subsystem ike2 notice

! VPS側のプライベートネットワーク (192.168.18.0/24) をトンネルインタフェースに向ける
ip route 192.168.18.0/24 Tunnel10.0

! 対向ホストからのIKEv2, ESP通信を許可
ipv6 access-list permit-ipsec permit 50 src 2401:2500:102::52/128 dest 2409:10:2900::1/128
ipv6 access-list permit-ipsec permit udp src 2401:2500:102::52/128 sport eq 500 dest 2409:10:2900::1/128 dport eq 500

! PSKの値
ikev2 authentication psk id ipv6 2401:2500:102::52 key char secret1

! フレッツONUに接続しているI/F (抜粋)
interface GigaEthernet0.0
  no ip address
  ipv6 enable
  ipv6 traffic-class tos 0
  ipv6 tcp adjust-mss auto
  ipv6 filter permit-ipsec 2000 in
  no shutdown

! 宅内LANに接続しているI/F (抜粋)
interface GigaEthernet2.0
  ip address 192.168.19.1/24
  ipv6 enable
  ipv6 interface-identifier 00:00:00:00:00:00:00:01
  no shutdown

! IPsec VPN I/F
interface Tunnel10.0
  tunnel mode ipsec-ikev2
  ip unnumbered GigaEthernet2.0
  ip tcp adjust-mss auto
  ikev2 child-pfs 3072-bit
  ikev2 child-proposal enc aes-cbc-256
  ikev2 child-proposal integrity sha2-512
  ikev2 dpd interval 10
  ikev2 negotiation-direction responder
  ikev2 sa-proposal enc aes-cbc-256
  ikev2 sa-proposal integrity sha2-512
  ikev2 sa-proposal dh 3072-bit
  ikev2 source-address GigaEthernet2.0
  ikev2 peer 2401:2500:102::52 authentication psk
  no shutdown

接続確認

Ubuntu 24側

sudo systemctl restart strongswan.service
sudo swanctl --list-conns
sudo swanctl --list-sas

IX2215側

show ikev2 sa
show ikev2 child-sa

参考

GitHubで編集を提案

Discussion