GentooでWireGuardを使ってみる

2024/04/27 12:59#Linux

仕事でWireGuardを使ったVPN接続をする必要があったのでメモです。
特定のIPだけVPN経由で接続したいという要件でした。

GentooのWireGuardウィキを参考に設定していきます。
https://wiki.gentoo.org/wiki/WireGuard
環境はOpenRCでnetifrcです。

カーネル

WireGuardは5.6からカーネルに入ってるらしいのでCONFIG_WIREGUARD有効にする。

ツールのインストール

wireguard-toolsインストールして、wgコマンドを使用できるようにします。

emerge -a net-vpn/wireguard-tools

net-misc/netifrc now has native support for wireguard and wg-quick is no longer required.

wireguard-toolswg-quickコマンドでネッワーク設定を自動化できるみたいなのですが、
netifrc設定だけで問題ないみたいなのでUSEフラグから落としました。

net-vpn/wireguard-tools -wg-quick

設定していく

WireGuardの設定ファイルを用意します。
今回は接続先の組織から貰ってきた物を使用しました。
配置はどこでも良いみたいですがWikiに従って/etc/wireguard/wg0.conf配置しました。

# /etc/wireguard/wg0.conf
# センシティブ情報は省略

[Interface]
PrivateKey = 

[Peer]
PublicKey = 
Endpoint = 
AllowedIPs = 

Remove "Address" and "DNS" from wg0.conf, because they won't be recognized by net-misc/netifrc.

netifrc[Interface]AddressDNS読み取ってくれないので、
/etc/conf.d/net設定するみたいです。

Wikiでは全てのルーティングをVPN経由にする設定が例として載っていますが、
今回は特定のIPに接続する時だけVPNを経由したいので下記のように設定しました。
[VPN経由にしたいアドレス]wg.conf[Peer]内のAllowedIPs同じ物です。

# /etc/conf.d/net
wireguard_wg0="/etc/wireguard/wg0.conf"
config_wg0="[Interface]のAddress部分"

postup() {
	if [ "${IFACE}" == "wg0" ];
	then
		ip route add [VPN経由にしたいアドレス] dev wg0 || exit 1
	fi
	return 0
}

predown() {
	if [ "${IFACE}" == "wg0" ];
	then
		ip route del [VPN経由にしたいアドレス] dev wg0 || exit 1
	fi
	return 0
}

最後にインターフェース立ち上げ用スクリプトのsymlink作成して完了です

ln -s /etc/init.d/net.lo /etc/init.d/net.wg0

たまにしか接続しないので、自動起動はせず手動で起動する針にしてます。

rc-service net.wg0 start