Wiregurad VPNサーバ設定(OpenBSD)

VPSホストにVPNをたて、固定IPからそれぞれ接続しトンネルをはり、 VPN経由セグメントのLANをつくります。

パッケージの準備(必要なら)

VPNサーバにするなら、WireGuardは、カーネルのwg(4)として入っているので、なにもいりませんが、鍵生成をするときにwgコマンドを使いたいなら pkg_add wireguard-toolsを入れます。 (当方はいれてません)。

鍵生成

  • VPNサーバーの秘密鍵を生成(例: wg genkey または openssl rand -base64 32)

  • 公開鍵を取得:wgが入っているときはwg pubkeyだけど、インターフェース設定できれば、ifconfig wg0 |grep wgpubkeyでとれるので、それでいいと思います。

wgをつかって一挙につくるなら

sudo wg genkey | sudo tee /etc/wireguard/server_private.key | sudo wg pubkey | sudo tee /etc/wireguard/server_public.key
sudo chmod 700 /etc/wireguard

などでいいでしょう。

インターフェース設定(/etc/hostname.wg0)

ここではwgのLANセグメントを10.0.80.0/24とします。

  • アドレス指定(例: inet 10.0.80.1 255.255.255.0)
  • 秘密鍵指定(wgkey ...)
  • 待ち受けポート指定(wgport おこのみ)
  • ピア(クライアント)設定(wgpeer <クライアント公開鍵> wgaip <クライアントのトンネルIP>/32 など)
  • up
  • sudo chmod 400 /etc/hostname.wg0
cat /etc/hostname.wg0
wgkey '秘密鍵'
wgport おこのみ
inet 10.0.80.1 255.255.255.0
##以下、クライアント設定(10.0.80.13の例)
wgpeer 'クライアント公開鍵' wgaip 10.0.80.13/32
以下略

ファイアウォール(pf)

  • UDPの待ち受けポート(おこのみ)を通す
  • wg0 インターフェースの通過を許可 yes

sudo pfctl -f /etc/pf.conf

###########################################
# WireGuard部分のみの摘記
###########################################
# VPNアクセス可能global IP拠点:これ以外は絶対に拒絶(笑)
allowed_ips =" {固定IP,固定IP} "
#インターフェース
ext_if = "vio0" #internet ip reachable
wg_if = "wg0"
#wgのsegment
wg_net = "10.0.80.0/24"
#サービスポート
wg_tcp_ports = "{ http , 445, いろいろ }" # smb:445
icmp_types      = "{ echoreq, echorep }"
# WireGuardポート
wg_port = "おこのみ"
# wgのMTU対策
match on $wg_if scrub (max-mss 1280)
###########フィルター設定開始###########
set skip on lo
set block-policy drop
block all
pass on lo
# UDP wg用:固定IPのみアクセス許容
pass in on $ext_if proto udp from $allowed_ips to any port $wg_port keep state
# $wg_if内部
pass in on $wg_if proto tcp from $wg_net to $wg_net port $wg_tcp_ports flags S/SA keep state
pass out on $wg_if proto tcp from $wg_net to $wg_net port $wg_tcp_ports flags S/SA keep state
pass in on $wg_if proto icmp from $wg_net to $wg_net icmp-type echoreq
pass out on $wg_if proto icmp from $wg_net to $wg_net icmp-type echoreq

インターフェースの起動

sudo sh /etc/netstart wg0

確認

  • ifconfig wg0
  • wg show(toolsを入れている場合)

備考:クライアント側設定

これは別記事ですでに書いていますが( BeagleBoneGreenのdebian versionup と wireguard client設定 )とりあえず再掲しておきます。

上のインターフェース例の10.0.80.13の設定

[Interface]
Address = 10.0.80.13/24
PrivateKey = クライアント秘密鍵
ListenPort = おこのみのエフェメラルポート
[Peer]
PublicKey = VPNサーバの公開鍵
Endpoint = VPNサーバのIP:ポート番号
AllowedIPs = 10.0.80.0/24
PersistentKeepalive = 25

LANセグメント間ルーティング有効とする場合

各拠点LANセグメントやVPNサーバーになってるホストのセグメントの間のルーティング有効にするばあい

IPフォワーディングの有効化

-実行時: sysctl net.inet.ip.forwarding=1

-永続化: /etc/sysctl.conf に net.inet.ip.forwarding=1 を追記

pf設定

ここらへんは、説明を追加変更しなければならないので別記事で