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設定
ここらへんは、説明を追加変更しなければならないので別記事で