DD-WRT OpenVPN の設定
Table of Contents
用意するもの
OpenVPN 認証局の設置 の手順に従って生成した、下記ファイルが必要。
- ca.crt
- server_サーバ名.crt
- server_サーバ名.key
- dh2048.pem
DD-WRTのWeb管理画面からの設定方法
Services -> VPN
OpenVPN Server/Daemon
図のように設定する。
- Public Server Cert
- server_サーバ名.crt より、–—BEGIN CERTIFICATE–— から –—END CERTIFICATE–— までの部分を張り付ける
- CA Cert
- ca.crt より、–—BEGIN CERTIFICATE–— から –—END CERTIFICATE–— までの部分を張り付ける
- Private Server Key
- server_サーバ名.key より、 –—BEGIN PRIVATE KEY–— から –—END PRIVATE KEY–— までの部分を張り付ける
- DH PEM
- dh2048.pem より、–—BEGIN DH PARAMETERS–— から –—END DH PARAMETERS–— までの部分を張り付ける
- Additinal Config
- 下記を記述する
push "route 192.168.1.0 255.255.255.0" push "dhcp-option DNS 10.8.0.1" dev tun0 keepalive 10 120
Administration -> Commands
"Commands"のフィールドに下記を入力し、「Save Startup」を押す。
iptables -t nat -A POSTROUTING -o br0 -s 10.8.0.0/255.255.255.0 -j MASQUERADE
DNSの設定
(2025.1.10追記) 長い間、iPhoneからVPNに接続している間、外部のWebページが見られないのは当たり前と思っていたのですが、ふと、これはDNSが機能していないからではないかと思い当たりました。
今回の構成では、DNSは ONU (192.168.1.1) を使用します。OpenVPNの設定では、`push "dhcp-option DNS 10.8.0.1"` と指定していますが、これを DNSMasq にて待ち受けるようにします。
下記の2つの項目の設定を行うことで、外部のWebページが見られるようになりました。
Services -> Services
DNSMasq
DNSMasq を Enable とし、"Local DNS" を Enable にした上で、"Additional DNSMasq Options" にも設定します。
interface=tun0 listen-address=10.8.0.1 bind-interfaces no-resolv server=192.168.1.1
Setup -> Basic Setup
Network Setup
"Network Address Server Settings (DHCP)" のところで、"Use DNSMasq for DNS" がチェックされていることを確認します。
DNSサーバーが想定通りに選択されているかの確認
https://www.dnsleaktest.com/ の Standard test を実施します。
iPhoneでセルラー+VPN経由で、Public IP がISPのIPアドレスになっており、かつ、DNSサーバーが ISP のもの(Nuroであれば、So-net)になっていることを確認します。
状況確認
Status -> OpenVPN
設定の解説
push "route 192.168.1.0 255.255.255.0" クライアントにサーバー側の LAN を通知しアクセスを可能にする指定
参考
- 23.7. VPN の拡張 (Turbolinux 11 Server: ユーザーガイド)
- Linux(Network/VPN)ブログトップ (ぴろにっき)
- Linux での OpenVPN セットアップに関して、ブリッジモード、ルーティングモード両方について説明がある
- OpenVPNのインストールとセットアップからインターネット接続までのガイドブック
- ルーティングモードの例。"redirect-gateway def1 bypass-dhcp"の設定について言及がある