DD-WRTでOpenVPNの設定
色々はまったのでメモ。
参考
認証局の設置~クライアント証明書の作成
easy-rsaを使用する.使い方はここを参考に. 後から気づいたがvpnux PKI ManagerなんていうGUIツールが公開されていた.これを使えば楽にできるかも.
DD-WRTの設定
OpenVPNサーバの設定
Services -> VPNから
Key | Value |
---|---|
OpenVPN | Enable |
Start Type | WAN Up |
Config as | Server |
Server mode | Router (TUN) |
Network | 10.0.1.0 |
Netmask | 255.255.255.0 |
Port | 11194 |
Tunnel Protocol | TCP |
Encryption Cipher | AES-256-CBC |
Hash Algorithm | SHA256 |
Advanced Options | Enable |
TLS Cipher | None |
LZO Compression | Yes |
Redirect default Gateway | Disable |
Allow Client to Client | Disable |
Allow duplicate cn | Disable |
Tunnel MTU setting | 1400 |
Tunnel UDP Fragment | - |
Tunnel UDP MSS-Fix | Disable |
CCD-Dir DEFAULT file | - |
Static Key | - |
PKCS12 Key | - |
Public Server Cert | サーバ証明書の内容を転載 |
CA Cert | CA証明書の内容を転載 |
Private Server Key | サーバの秘密鍵の内容を転載 |
DH PEM | DHパラメータの内容を転載 |
Additional Config | push “route 10.0.0.0 255.255.255.0” |
TLS Auth Key | - |
Certificate Revoke List | - |
- Network, Additional Configについて
自宅のLANは10.0.0.0/24で作成している.OpenVPNで接続したクライアントはそれとは別のセグメント(10.0.1.0/24)に配置することにする.(自動でサーバのIPアドレスは10.0.1.1になる)
接続してきたクライアントへ自宅LAN宛のルーティングを追加するためにAdditional Configに「push ~行」を追加している.
-
Portについて
セキュリティのことを考えてデフォルトのポートから変更する.後に設定するclient.ovpnやポート転送の設定値もここの値にそろえる. -
Tunnel Protocolについて
なぜかUDPだとクライアントから接続できなかったためTCPにする.
設定が完了したらApply Settingsをクリック.
ポートフォワーディングの設定
OpenVPNの設定を書けばWAN側ポートでも待ち受けてくれるものと思っていたがそうではないみたい. 別途ポートフォワーディングの設定をする必要があった.ここで一番つまった.
NAT/QoS -> Port Forwardingから
Application | Protocol | Source Net | Port from | IP Address | Port to | Enable |
---|---|---|---|---|---|---|
OpenVPN(任意の文字列) | TCP | 0.0.0.0/0 | 11942 | 10.0.1.1 | 11942 | チェックを入れる |
クライアントの設定
インストール方法は省略
- client.ovpn
コメントを除けば以下の内容
client
dev tu
proto tcp
remote <OpenVPNサーバのホスト名またはIPアドレス> 11194
resolv-retry infinite
nobind
persist-key
persist-tun
ca <CA証明書のファイル名>
cert <クライアント証明書のファイル名>
key <クライアント秘密鍵のファイル名>
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
verb 3
auth sha256
証明書と秘密鍵はclient.opvnと同じディレクトリ(Windowsの場合はC:\Program Files\OpenVPN\config)に置けばよい. なお証明書と秘密鍵はファイル名を書くかわりに以下のように.opvnに内容を直接書くこともできるみたい.1ファイルで完結するからこちらの方がいいかも.
<ca>
-----BEGIN CERTIFICATE-----
略
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
略
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
略
-----END PRIVATE KEY-----
</key>
あとはクライアントから接続するだけ.
comments powered by Disqus