自宅の GL-iNet GL-AR750S には現在OpenVPNを入れているのですが、速度がイマイチ。OpenWRTには、CiscoのAnyConnect互換の OpenConnect サーバを立てられると散見したので、早速挑戦してみます。実は速度の伸びないOpenVPN代替VPNとして、Wireguardを試しました。ところがこれが繋がったり繋がらなかったりととても微妙で、そのトラブルシューティングにデバッグログ見たかったのですが、それにはソースからコンパイルしないと出力されないらしく、不完全燃焼のまま断念しました。
CiscoのAnyConnectは昔、クライアントとして少し触ったことがある程度ですが、導入に当たりOpenWRTでのわかりやすい解説を見付けたので、ほぼそれに沿って進めます。
パッケージのインストールはLuCI上から「luci-app-ocserv」を選んでインストールすれば、付随する必要なパッケージも同時にインストールされます。DDNSは既に使用しているので省略。
インストール終了後、ブラウザをリロードすると、Servicesメニュー下にOpenConnect VPNという項目が追加されているはずです。
今回の仕様は、Basic認証でVPN接続先をデフォルトルートとし、外向きトラフィックも含め全てVPNトンネルへ通すこととします。設定は基本的にデフォルトのままで、下のDNSにルータのLAN IPアドレスを追加、ルーティングは削除します。
設定テンプレートタブでは、以下の項目を変更するのみ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# A banner to be displayed on clients #banner = "Welcome to OpenWRT" # The Certificate Authority that will be used to verify # client certificates (public keys) if certificate authentication # is set. ca-cert = /etc/ocserv/ca.pem # The object identifier that will be used to read the user ID in the client # certificate. The object identifier should be part of the certificate's DN # Useful OIDs are: # CN = 2.5.4.3, UID = 0.9.2342.19200300.100.1.1 cert-user-oid = 2.5.4.3 |
次にUser Settingsにて、必要なUser IDとパスワードを登録します。パスワードは保存後、下図のように暗号化されてしまうので忘れずに。
続いてFirewallの設定です。トンネルに使われるサブネット(192.168.100.0/24)が適切に通過出来るよう、/etc/firewall.userの末尾に以下を追加します。
1 2 3 |
iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j MASQUERADE iptables -I FORWARD -i vpns+ -s 192.168.100.0/24 -j ACCEPT iptables -I INPUT -i vpns+ -s 192.168.100.0/24 -j ACCEPT |
Port Forwarding は、外向きの443番をOpenConnectが待ち受けている4443番へと交換するように設定します。
OpenConnectの設定は以上です。System -> Startupから「ocserv」サービスをEnabled かつ Startさせるか、CLIで次のコマンドを実行してサービスを有効・開始させます。
1 2 |
# /etc/init.d/ocserv enable # /etc/init.d/ocserv start |
正しく機能しているか、Anrdoid端末で接続試験してみます。PlayストアからCisco謹製AnyConnectをインストール。新しい接続を作成し、ルータのDDNS名を入れて接続します。その際、サーバ証明書が出自不明なので警告が毎回出ますが続行。ユーザIDとパスワードを入力すると接続します。
今回はここまで。次回Ubuntuから接続して、スピードテストをOpenVPNの時と比較してみたいと思います。
参考と鳴謝)