OpenWRT v22.03でのOpenConnect VPN Server (ocserv)の構築

公開 | 更新 
図3.Firewall vpn Zone追加

これまで過去に OpenWRT に OpenConnect VPN Server を構築してきた時と異なり、 現行の OpenWRT v22.03 ではファイアウォールベースのルーティングを使って、簡易的にVPNトラフィックを処理する手法が使えないので、オーソドックスにVPN用のインターフェイスとゾーンを定義して対応しました。

ocservのインストールと設定

仮想マシンとして構築したOpenWRT v22.03.3ルータに、公式レポジトリからOpenConnect VPN Serverパッケージ ocserv をインストールします。

 

これまでにOpenConnect VPN Serverを構築した、GL-iNet GL-AR750SやFriendlyElec Nano Pi R2Sでの設定を元に、

以下のように設定ファイルを編集します。

次のコマンドで設定を反映させます。

 

ファイアウォールの穴開け

次に、以下の要領で外からのアクセスに対し、ファイアウォールに穴を開けてNATを設定します。

 

ファイアウォールベースのルーティングが使えない

VPNのトンネルを通ってやって来たトラフィックは、これまでは以下のようなカスタムルールを記述することによる、ファイアウォールベースのルーティングで処理していました(Nano Pi R2S OpenWRT v21.02での設定例)。

図1.ファイアウォールカスタムルール

図1.ファイアウォールカスタムルール



ところがOpenWRT v22.03で従来のiptables (fw3)からnftables (fw4)へ変わったことで、こうしたカスタムルールをそのまま使えなくなってしまいました。

また、LuCIの Firewall ページ上でも、 カスタムルール タブは廃されています。

 

VPNインターフェイスを作って交通管理

複雑怪奇なファイアウォール実装を一から学ぶより、ここはocservパッケージ公式のREADMEに従って、VPN用の論理インターフェイスを作り、専用のファイアウォールゾーンを定義する方法で進めます。

まず始めに、VPN用の論理インターフェイスを追加します。

図2.vpnインターフェイス

図2.vpnインターフェイス

そのインターフェイスを vpn という新しいファイアウォールゾーンへ割り当てて、各ゾーンとのトラフィックルールを次の通りに定義します。

図3.Firewall vpn Zone追加

図3.Firewall vpn Zone追加

ネットワークとファイアウォールの設定を反映します。

 

サーバ側の構築は以上で終わり。試しにテスト環境でAndroidスマートフォンからCisco AnyConnect Client を使って接続し、LANサブネット側へ疎通できることを確認しました。

図4.VPN接続ユーザ確認

図4.VPN接続ユーザ確認

図5.AnyConnectから接続中

図5.AnyConnectから接続中

 

終わってみるとVPN用のインターフェイスやゾーンを作ってルーティング設定する方が、見た目にも分かりやすいことから、他のルータへも機会を見つけて適用してみようと思います。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA