2017年08月12日

OPENWRTをOpenVPNのサーバーにして外部からアクセスするときの設定

openwrt で openvpnを使いサーバーにする場合です。今回のネットワーク構成としてはプロバイダから無線LANルーターがもらえていて、純粋にVPNサーバーとして使ってみた場合になります

用意したもの( https://www.openvpn.jp/download/ )
・vpnux PKI Manager(windows)
証明局、証明書をwindowsPCで簡単に作るためのソフト
別途用意してある場合は下記手順のvpnuxPKI.exe関係は省略可能
・vpnux Client
vpnuxClient-1.3.0.0-install.exe
openvinで接続するために必要となるソフトでクライアント
[openvpn-install-2.3.11-I601-i686.exeではありません]

vpnux PKI Manager(windows)
・vpnuxPKI.exe 実行
CAの新規作成、フォルダは任意(新しく作っておくこと)
・CA証明書に記録される情報を入力しますが。自分で識別できる程度でよいかと思います。まじめに運用しないのであればニックネーム的なものでOK
これによりサーバー側とクライアント側で共通で使用されるファイルができる
・サーバー用秘密鍵/証明書のボタンを押して、サーバー用証明書ファイルを作る。名前は「server_xxxxxx」形式推奨。サーバー用であることの明記と、どのサーバーかわかるような名前にする。
・クライアント用秘密鍵/証明書のボタンを押して、クライアント用証明書ファイルを作る。基本は1PC1個にするのでどのクライアント用であることの明記とPCがわかるような名づけをする、乱数にしといて紐付けで、別途管理でもよい。
underpink1.png
事前準備1(WSR-1166DHPのハブとしての利用準備、通常は不要)
・Buffalo WSR-1166DHPにシリアルケーブル経由でopenwrtインストール済み
・上位側はLAN側ではなくwanポートに有線で接続
Interfaces設定で
・wamは固定IP(dhcp clientで自動割り当てもできますが、何かの拍子にアドレスが変わるのを避ける)
・Disable DHCP
上位にルーターがいるので無効化、ブリッジが組んであればlan側接続機器や無線側も上位のルーターから
IPが振り当てられるはずです。
・Bridge interfacesでeth0.1 / eth0.2 / wireless / tap0 にチェック
(tap0はopenwrtの設定を終わったときに出てきます、"eth0" にはチェックを入れない)
・firewallはwanのままでいい模様

・lanのタブでも同じ設定
(LAN側とwan側でIPを変えて設定できますが、LAN側のIPが有効になっていましたwan側の設定はいらないかも)
(wanとlanは共通になるけど設定が違ってもいい模様?)
・firewallはlan側にチェックでいい模様

Firewall - Zone Settings
・今回はローカル内においたサーバーなので、inputとoutputとfowardは許可
以上でlan端子側につないだ機器にはプロバイダ提供のルーターからローカルIPが割り当てられると思います。

事前準備2:
opkg install libopenssl
opkg install openvpn-openssl
opkg install luci-app-openvpn

さらにDDNS対応することでアクセスしやすくするために以前の記事のDDNS設定はしました。
http://okoya.seesaa.net/article/452439610.html

事前準備3:
ルータとopenwrtが別なので、ルーター側でポート開放をしておく
ポート1194(次項のvpn設定時に変えていなければ)のtcp,udpが転送できていればOK
underpink1.png
設定:サーバー側IP範囲が192.168.1xxの場合
(少なくとも接続元(リモートPC側)と接続先(ルーターLAN)のIP範囲は分けないと動作がおかしくなります)
luciにopenvpnの項目が出てきます。
設定例見たいのがありますが、選択肢で選べるところからServer用のEthernet Bridge VPNをadd
出てきたやつを設定で新しい項目を出現させる
注)下記以降設定で表示されてないものが出てくるかと思いますが、下のほうのadditionalFieldから追加すると設定できるようになります。
注2)余計な設定を呼び出すと変な設定が有効化されて動作がおかしくなるかもしれません、設定を破棄してやり直すこと)
・port 1194
(既知のポートを使う宿命で定期的にドアノックされるsyslogが残るようになります)
・server_bridge
192.168.1.101 255.255.255.0 192.168.1.228 192.168.1.254
ルーターLAN側と同じセグメントでいける模様
サーバーのIPを101にしていますが意味がない(使いどころがない)ようです
・comp_lzo
データ圧縮は有効、CPU食うのでちょっと遅くなるかも
クライアントのソフトと同一設定にする
(最近のLUCIでは設定が出てこないかもしれません、その場合は圧縮なしでの動作のようです)
(OpenVPNとしてこのオプションが廃止されてcompress 'lzo'という記述に移行しているようですが最新のluciでは出てこないかも)
・proto udp
クライアントのソフトと同一設定にする
・ca
Certificate authority -> ca.crt
作っておいたCA証明書をファイルから選択
・dh
Diffie Hellman parameters -> dh1024.pem
・cert
Local certificate -> server_xxxxxx.crt
サーバー用のcrtファイルを選ぶ
・key
Local private key -> server_xxxxxx.key
サーバー用のkeyファイルを選ぶ

上のほうにSwitch to advanced configuration
というリンクがあり、押すと詳しく設定できる
・Networking -> dev tap0
数字はなくてもいいはずだが一応
tapならブリッジができるのでtapとする
・Cryptography -> auth
未指定時はSHA1になる、気にするなら個別に
SHA256
SHA512
などにする。(クライアント側も別途同じ指定してあげること!)
(注、通信速度は暗号設定にも依存します)
・Cryptography -> cipher
未指定時はBF-CBCという暗号になる、気にするなら個別に
AES-128-CBC
AES-192-CBC
AES-256-CBC
などにする。(クライアント側も別途同じ指定してあげること!)
・Cryptography -> key-method 2
これを変えないと下記エラーがでた。クライアントとの相性?
error: --mode server requires --key-method 2
・save&Applyして設定は一旦完了
・openVPNトップに戻って、enableのチェックを入れて保存、enableかstartを押すと動作するようになる
これでopenVPNの設定は終了

最後に
netwark -> Interfacesのところで
Bridge interfaceでtap0を含める

==おまけ、必須ではない==
追加のアダプタの設定としてtelnetでアクセスし
vi /etc/config/openvpn
list push "redirect-gateway def1"
#クライアント側で自動的にデフォールトゲートウェイをVPNサーバに設定してくれるようになるらしいが効果がないような
list push "dhcp-option DNS 192.168.1.1"
list push "route 192.168.1.0 255.255.255.0"
をたしています。
======

クライアント側設定
・vpnuxClient-1.3.0.0-install.exe インストール
[付属のドライバは新しくないようです、新規で入れるときはopenvpn-install-xxxx-Win10.exe などのwindows用のアプリもインストールしてtap vurtual~となっているドライバだけ更新するのがよいかと、サーバー側のアプリの更新日時が新しいならドライバも近い日付のものに合わせておいたほうが良いように思います]
・プロファイルを押して新規設定作成
・プロファイル名:後で見てわかりやすい名前
・VPNサーバー:ルータのIPアドレス、ドメイン名、の何れかを入力
個人回線は設定変更時の再起動などでIPが変わることはよくあるのでDDNS使用を推奨です。
(DDNSを使っていてもIP変更直後は反映されていなくて接続できないことがあります。2-3時間待つか、使用しているDDNSのHPに行ってログインすれば最新のIPは確認できるかと思いますが)
・ポート:サーバー側の設定に合わせないと接続はできない
・デバイス:Bridge (TAP) サーバーの設定に合わせる
・プロトコル:サーバーに合わせる
・拡張設定:圧縮有効で残りは未チェックですが、圧縮無効にしたならチェックを外す
・CA証明書:ca.crtファイルを読み込む
・ID/パスワード認証は使用しない
・証明書認証(PKI)を使用
・証明書:client_XXXX.crt を読ませる
・秘密鍵:client_XXXX.key を読ませる
・サーバー側でcipherを変えてある場合は、→上の詳細設定タブ→暗号アルゴリズム
、でサーバー側と同じにする,メッセージダイジェストも同様にauthとあわせる

また、コントロールパネル->ネットワーク設定
TAP-Windows Adapter V9のもののIPv4プロパティ
・192.168.1.1 メトリック10
を追加するとデフォルトの通信先としてアクセスするようになります。

underpink1.png
結果:
VPN側にbridge構成の構築ができました。openwrt配下にない機器(ルーターのLAN端子の機器)を含め
出先などで自宅のPCや資産にアクセスが問題なくできています。

備考
・通信速度としては共有フォルダ間のファイル移動で18MBpsが出てました。CPUが良い物を積んでいるので速いです。(MediaTek MT7621A, 880MHz dual-core CPU )。jcomのようなケーブルテレビ回線利用の側にサーバーを置くとアップロード速度の遅さがボトルネックになるかと思います。
なお、シングルコア400MHz品のopenvpn実績では4MBps程度
(注、速度は暗号設定にも依存しますので参考値。)
・WSR-1166DHPの消費電力は実測で3W程度になります(TAP-TST5による測定)
(付属のACアダプタは18Wとれるものなのでマージンは結構とっているようです)
・powerdvd12でDNLAアクセスしてみましたが、レコーダーの表示はできるが、再生画面でエラーでした。
(タイムアウト制限にひっかかったか?というかんじ。上記設定では何か足りないのかもしれません)
・ログに下記エラーが
Cannot load CA certificate file /lib/uci/upload/cbid.openvpn.vridgevpn.ca
CAの設定が悪い、間違っているとき
・ログも何も出ずに動作しているように見えない→open-vpnのところでenableにチェックを入れる
・failed, will try again in 5 seconds: 既に接続されているドライブ上のディレクトリにドライブを接続しようとしました。
というエラーが出る→wan側のPhysical Settingsでeth0"にチェックが入っている場合にでることがあるのでチェックをはずす
・ほんとうはopenvpnではなくL2TPやIPseqをやってみたかったが難易度高めで、挫折。pptpは調べたので設定できた模様(ただlanの機器に接続できてない?)

openwrtでwww.ieserver.netのddnsを使う
https://okoya.seesaa.net/article/452439610.html
WSR-1166DHPにDD-WRTを適用する
https://okoya.seesaa.net/article/442415205.html
DD-WRTをOpenVPNのサーバーにして外部からアクセスするときの設定
https://okoya.seesaa.net/article/440982961.html
OpenWrtを使って無線LANのコンバータ(中継器)にする方法(WSR-1166DHP2、lede-17.01.4)
https://okoya.seesaa.net/article/461078274.html




posted by okoya at 23:32| Comment(0) | ソフト | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
感想、コメントを残そう
コメント記入ページへ