NordVPNはOpenWrtに対応していますか?
報告によると、OpenWRTファームウェアのルーターはNordVPNのようなVPNに対応しているようです。ただし、以下の設定はNordVPNによってテストされたものではなく、寛大なユーザーの皆さまがテストし、共有してくださった方法です。 特に、OpenWRTコミュニティで精力的に活動されているUnwind様に感謝申し上げます。Unwind様からは、最新のOpenWRTに関するガイドを定期的に提供していただいています。 nordvpnliteを使用してNordVPNを設定したい場合は、こちらのガイドをご覧ください。
GUIガイド
このガイドでは、OpenWrtファームウェアを使用し、LuCIウェブインターフェイス経由でNordVPN接続を設定する方法を説明します。
- インターネットブラウザにローカルIPアドレスを入力してログインし、お使いのOpenWrtルーターのLuCIインターフェイスにアクセスします。 デフォルトのIPアドレスは192.168.1.1、ユーザー名(Username)はrootです。
注:デフォルトではパスワードは設定されていませんので、パスワード欄は空白で構いません。 ただし、ログイン時にパスワードを設定するよう求めるメッセージが表示されます。
パスワードは、「システム」>「管理」をクリックし、管理画面で設定できます。
- ログイン後に、「システム(System)」タブ、そして「ソフトウェア(Software)」を選択します。
- 「リストを更新(Update lists)」ボタンをクリックし、処理が完了するまで待ってから「閉じる(Dismiss)」をクリックします。
-
フィルタ(Filter)フィールドに以下の名前を入力して「インストール(Install)」をクリックし、パッケージをインストールします。
- openvpn-openssl
- ip-full
- luci-app-openvpn
- 「保存して適用(Save & Apply)」をクリックしてから、ルーター画面を更新します。 これで、VPNという名前の新しいタブが表示されるようになったはずです。 そのタブをクリックして、ドロップダウンから「OpenVPN」を選択します。
- ここで、OpenVPNクライアント設定ファイルをダウンロードする必要があります。 その後、NordAccountを通じて推奨サーバーに接続できます。
以下の手順に従って、手動接続設定用のサービス認証情報をご確認ください。-
-
Nordアカウントにログインし、NordVPNをクリックして、 「手動設定」の下にある「サービスの認証情報」をクリックします。 手動で接続するために必要なユーザー名とパスワードが記載されています。
- OpenVPNクライアント設定ファイルをダウンロードする必要があります。
以下の手順に従って、接続に最適なサーバーを確認してください。-
Nordアカウントにログインし、NordVPNをクリックします。
-
詳細設定までスクロールし、「NordVPNを手動で設定」をクリックします。
- 「推奨サーバー」タブを選択します。 お客様の所在地に応じて、アルゴリズムにより最適なサーバーが推奨されます。
- 「詳細フィルタ(Advanced filters)」をクリックして、「サーバーの種類(Server type)」と「セキュリティプロトコル(Security protocol)」を選択することで推奨サーバーをカスタマイズできます。
特定のサーバーを選択したい場合、以下の手順に従ってください。- 「NordVPNを手動で設定(Set up NordVPN manually)」で「OpenVPN設定ファイル(OpenVPN configuration files)」を選択します。
- 下にスクロールするか、検索(Search)バーを使って接続したいサーバーを見つけます。 その後、「UDPをダウンロード(Download UDP)」または「TCPをダウンロード(Download TCP)」をクリックしてダウンロードを行います。
このガイドでは、us5104.nordvpn.comのサーバーを使用します。
- 「NordVPNを手動で設定(Set up NordVPN manually)」で「OpenVPN設定ファイル(OpenVPN configuration files)」を選択します。
-
Nordアカウントにログインし、NordVPNをクリックします。
-
Nordアカウントにログインし、NordVPNをクリックして、 「手動設定」の下にある「サービスの認証情報」をクリックします。 手動で接続するために必要なユーザー名とパスワードが記載されています。
-
- 「OVPN設定ファイルのアップロード(OVPN configuration file upload)」セクションのインスタンス名(Instance name)フィールドでVPN接続に名前を付けます(この例では「nordvpn\_us」と付けています)。 その後、「ファイルを選択(Choose File)」ボタンをクリックしてダウンロードしたサーバーファイルを見つけ、「アップロード(Upload)」をクリックします。
- 「OpenVPNインスタンス(OpenVPN instances)」セクションで、作成したインスタンスの横にある「編集(Edit)」ボタンをクリックします。
-
下のフィールドに、NordVPNの認証情報(ユーザー名とパスワード)を行を分けて入力します。
ユーザー名
パスワードNordVPNサービスの認証情報(ユーザー名とパスワード)は、Nordアカウントダッシュボードでご確認いただけます。
- ここで、認証情報が入力されたフィールドの右上に表示されている認証情報ファイルへのパスをコピーし、「設定ファイル(Config file)」セクション
の「auth-user-pass」の行の隣にペーストします。
次のような形式になります:auth-user-pass /etc/openvpn/nordvpn_us.auth
- VPNサーバーに接続するには、「有効化済み(Enabled)」のチェックを入れ、作成したNordVPNインスタンスの横にある「開始(Start)」ボタンをクリックします。
- 下の「保存して適用(Save&Apply)」ボタンをクリックします。
- ナビゲーションメニューの上にある「システム(System)」にカーソルを合わせ、「再起動(Reboot)」をクリックします。 別の画面が開きます。 「再起動を実行(Perform reboot)」ボタンをクリックし、またログインしなおします。
- 画面最上部の「ネットワーク(Network)」タブにカーソルを合わせ、「インターフェース(Interfaces)」を選択します。
1. 「新しいインターフェースを追加(Add New Interface)」をクリックします。
2. 「名前」セクションには、「nordvpntun」と入力します。
3. 「プロトコル」をクリックし、「非管理」を選択します。
4. 「インターフェース(Interface)」ドロップダウンで、下の「-- custom --」フィールドに「tun0」と名前を入力し、Enterキーを押します。
- 「インターフェースを作成」をクリックして保存します。
- 最上部の「ネットワーク(Network)」タブを選択し、「ファイアーウォール(Firewall)」セクションに移動します。
- 「追加(Add)」ボタンをクリックして以下のように変更を加えます。
- 「vpnfirewall」と名前を付けます。
- 「入力(Input)」オプションを「拒否(Reject)」に設定します。
- 「出力」は「許可」のまま、「転送」は「拒否」のままにします。
- 「偽装(Masquerading)」オプションにチェックを入れます。
- 「MSSクランプ(MSS clamping)」オプションにチェックを入れます。
- 「カバーネットワーク(Covered Networks)」ドロップダウンメニューから「nordvpntun」を選択します。
- 「送信元ゾーンからの転送を許可(Allow forward from source zones)」ドロップダウンメニューで「plan」を選択します。
- 「保存(Save)」ボタンをクリックします。
- 「ゾーン(Zones)」セクションで、「lan」という名前のゾーンを見つけ、「編集(Edit)」ボタンをクリックします。
- 「宛先ゾーンへの転送を許可(Allow Forward to Destination Zones)」ドロップダウンで「NordVPN」エントリーにチェックを入れます。
- 画面最上部の「ネットワーク(Network)」を再度クリックし、ドロップダウンリストから「DHCPおよびDNS(DHCP and DNS)」を選択します。
- 「一般設定(General settings)」タブでDNS転送オプションを探し、NordVPN DNSアドレスを入力します。 アドレスは103.86.96.100と103.86.99.100です。
- 「Resolvおよびホストファイル(Resolv and hosts files)」に移動して「Resolvファイルを無視(Ignore resolve file)」にチェックを入れ、「保存して適用(Save & Apply)」ボタンをクリックします。
-
VPN > OpenVPNタブに戻ります。
- 「OpenVPNインスタンス(OpenVPN instances)」セクションで、リストのNordVPNオプションの隣にある「有効(Enable)」オプションにチェックを入れ、「保存して適用(Save & Apply)」ボタンをクリックします。
- 「開始(Start)」ボタンを再度クリックして、VPNサーバーに接続します。
CLIガイド
より高度なチュートリアルをお探しの場合は、このガイドをご利用ください。 OpenWrtを使用したVPNの利点を活用するには、OpenWrtファームウェアと有効化したOpenVPNクライアントの両方を使用したルーターが必要です。 ファームウェアのメイン画面はhttps://openwrt.org/です。
- まず、LAN IPアドレスを使ったSSHでルーターにアクセスできるようにする必要があります。 デフォルトのIPアドレスは192.168.1.1、ユーザー名はrootです。ただし、デフォルトの値を変更している場合は、IPアドレスは異なる場合があります。
-
デフォルトでは、ルーターのファームウェアイメージにはOpenVPNパッケージはありません。 以下のコマンドを実行してインストールします。
opkg update opkg install openvpn-openssl opkg install ip-full追加でLuCIのOpenVPN設定コンポーネントもインストールできますが、これはオプションです。 インストールしたい場合は、以下のコマンドを実行します。
opkg install luci-app-openvpn -
OpenVPNパッケージをインストールしたら、以下のコマンドを実行することで、ルーター起動時に自動でOpenVPNを起動できます。
/etc/init.d/openvpn enable - 次に、サーバー設定ファイルをダウンロードする必要があります。 以下の手順で行います。
-
Nordアカウントにログインし、NordVPNをクリックします。
-
詳細設定までスクロールし、「NordVPNを手動で設定」をクリックします。
- 「推奨サーバー」タブを選択します。 お客様の所在地に応じて、アルゴリズムにより最適なサーバーが推奨されます。
- 「詳細フィルタ(Advanced filters)」をクリックして、「サーバーの種類(Server type)」と「セキュリティプロトコル(Security protocol)」を選択することで推奨サーバーをカスタマイズできます。
特定のサーバーを選択したい場合、以下の手順に従ってください。- 「NordVPNを手動で設定(Set up NordVPN manually)」で「OpenVPN設定ファイル(OpenVPN configuration files)」を選択します。
- 下にスクロールするか、検索(Search)バーを使って接続したいサーバーを見つけます。 その後、「UDPをダウンロード(Download UDP)」または「TCPをダウンロード(Download TCP)」をクリックしてダウンロードを行います。
- 「NordVPNを手動で設定(Set up NordVPN manually)」で「OpenVPN設定ファイル(OpenVPN configuration files)」を選択します。
-
Nordアカウントにログインし、NordVPNをクリックします。
-
このガイドでは、uk2054.nordvpn.comのサーバーを使用します。ご自身で設定する際は、ウェブサイトが推奨するサーバーを使用してください。
サーバーファイルをダウンロードするには、接続したい国を選択し、「利用可能なプロトコルを表示」をクリックします。その後、OpenVPN TCPまたはOpenVPN UDPの「設定をダウンロード(Download config)」を右クリックし、「リンクアドレスをコピー(Copy link address)」を選択します。
その後、SSHセッションに戻り、以下のコマンドを実行します。wget -P /etc/openvpn https://downloads.nordcdn.com/configs/files/ovpn_udp/servers/uk2054.nordvpn.com.udp.ovpn
なお、コピーしたリンクは、特定のサーバーに対応したファイルのものを使用してください。 このコマンドにより、設定ファイルが/etc/openvpnディレクトリにダウンロードされ、管理しやすくなります。
または、SCPプロトコルやSFTPプロトコルなどのその他の方法で、別のデバイスにサーバー設定ファイルをダウンロードし、OpenWrtルーターに転送することもできます。
古いバージョンのOpenWrtの場合:
https://downloads.nordcdn.com/configs/archives/certificates/servers.zipからアーカイブをダウンロードできます。 ダウンロードしたアーカイブ内には、対応する.crtファイルと.keyファイルが含まれています。 このファイルは各VPNサーバー専用のものです。
-
NordVPN用のOpenVPNの設定では、OpenVPNを開始するたびにNordVPNのサービス認証情報(ユーザー名とパスワード)を入力するよう求められます。 そこで、認証情報が自動で入力されるよう、いくつかの設定を調整します。
まず、設定作業を簡単にするため、以下のコマンドを実行してnanoテキストエディタをインストールします。opkg install nanoまたは、すでに搭載されているviテキストエディタを使っても構いません。 テキストエディタに関する詳細は、こちらの記事をご覧ください。
次に、nanoテキストエディタを使ってダウンロードしたサーバー設定ファイルを開きます。 この例では、コマンドは以下のようになります。nano /etc/openvpn/uk2054.nordvpn.com.udp.ovpnその後、文字列「auth-user-pass」に「secret」という言葉を引用符なしで追加します。 次のような文字列となるはずです。
auth-user-pass secretNordVPNのサービス認証情報を保管するための新しい機密ファイルを作成する必要があります。 作成するには、次のコマンドを実行します。
nano /etc/openvpn/secretこれで、新しいファイルが作成され、nanoテキストエディタで開きます。
ファイルの1行目にNordVPNサービスのユーザー名、2行目にパスワードを入力します。NordVPNサービスの認証情報(ユーザー名とパスワード)は、Nordアカウントダッシュボードでご確認いただけます。
- ダウンロードした設定ファイルを使用して、以下のいずれかの方法でOpenVPNを設定します。
-
ファイルの拡張子を「.ovpn」から「.con」に変更します。そうすると、OpenVPNが拡張子でファイルを自動的に見つけられるようになります。
これには、mvコマンドを使用します。mv /etc/openvpn/uk2054.nordvpn.com.udp.ovpn /etc/openvpn/uk2054.nordvpn.com.udp.conf -
「/etc/config/openvpn」で以下の「uci」コマンドを使用して、ファイル名を指定します。
uci set openvpn.nordvpn=openvpn uci set openvpn.nordvpn.enabled='1' uci set openvpn.nordvpn.config='/etc/openvpn/uk2054.nordvpn.com.udp.ovpn' uci commit openvpnその後、ファイル「/etc/config/openvpn」は以下の追加の文字列を含んでいるはずです。
config openvpn 'nordvpn' option enabled '1' option config '/etc/openvpn/uk2054.nordvpn.com.udp.ovpn'以下のコマンドを実行すると確認できます。
tail /etc/config/openvpnまた、ファイルの拡張子を「.ovpn」から「.conf」へと変更し、「file/etc/config/openvpn」で指定することもできます。ただその場合は、OpenVPNがこの設定ファイルで起動するのは1回のみとなります。
-
-
以下のコマンドを実行して、新しいネットワークインターフェースを作成します。
uci set network.nordvpntun=interface uci set network.nordvpntun.proto='none' uci set network.nordvpntun.ifname='tun0' uci commit networkファイル「/etc/config/network」に、以下の文字列が含まれるようになったはずです。
config interface 'nordvpntun' option proto 'none' option ifname 'tun0'以下のコマンドを実行すると確認できます。
tail /etc/config/network -
新しいファイアウォールゾーンを作成し、以下のコマンドを実行してLANからVPNへの転送ルールを追加します。
uci add firewall zone uci set firewall.@zone[-1].name='vpnfirewall' uci set firewall.@zone[-1].input='REJECT' uci set firewall.@zone[-1].output='ACCEPT' uci set firewall.@zone[-1].forward='REJECT' uci set firewall.@zone[-1].masq='1' uci set firewall.@zone[-1].mtu_fix='1' uci add_list firewall.@zone[-1].network='nordvpntun' uci add firewall forwarding uci set firewall.@forwarding[-1].src='lan' uci set firewall.@forwarding[-1].dest='vpnfirewall' uci commit firewallこの手順が正確に完了すると、ファイル「/etc/config/firewall」は以下の追加の文字列を含んでいるはずです。
config zone option name 'vpnfirewall' option input 'REJECT' option output 'ACCEPT' option forward 'REJECT' option masq '1' option mtu_fix '1' list network 'nordvpntun' config forwarding option src 'lan' option dest 'vpnfirewall'以下のコマンドを実行すると確認できます。
tail -13 /etc/config/firewallそうすると、上記の文字列を含む最後の13行が表示されます。
-
次に、DNSサーバーの設定を行う必要があります。 最も簡単な方法は、ルーターのWANインターフェイスにNordVPN DNSを使うことです。 NordVPN DNSを追加するには、以下のコマンドを実行します。
uci set network.wan.peerdns='0' uci del network.wan.dns uci add_list network.wan.dns='103.86.96.100' uci add_list network.wan.dns='103.86.99.100' uci commit
注:コマンド「uci del network.wan.dns」を実行した後に「uci: Entry not found」というエラーメッセージが表示されても、無視して構いません。
ファイル「/etc/config/network」には、「wan」セクションが含まれており、その末尾に以下の3つの文字列が追加されている必要があります。config interface 'wan' <...> option peerdns '0' list dns '103.86.96.100' list dns '103.86.99.100'
コマンドを実行し、出力の中に「wan」インターフェースがあるか確認できます。cat /etc/config/networkまた、以下のコマンドを実行することで、Googleなどの別のDNSアドレスを追加することもできます。
uci set network.wan.peerdns='0' uci del network.wan.dns uci add_list network.wan.dns='8.8.8.8' uci add_list network.wan.dns='8.8.4.4' uci commit追加する文字列は、前に記載したものと同様の形式である必要があります。
(任意)OpenWRT 22.02以前のビルド(iptables)用のKillswitch
VPNトンネルが切断された場合にトラフィックの漏洩を予防するには、以下の手順に従ってください。
-
テキストエディタを使用してファイアウォールファイルを開きます。
sudo nano /etc/firewall.user -
以下の内容を追加します。
# This file is interpreted as a shell script. # Put your custom iptables rules here, and they will be executed with each firewall (re-)start # Internal uci firewall chains are flushed and recreated on reload, so # put custom rules into the root chains, e.g. INPUT or FORWARD, or into the # special user chains, e.g. input_wan_rule or postrouting_lan_rule. if (! ip a s tun0 up) && (! iptables -C forwarding_rule -j REJECT); then iptables -I forwarding_rule -j REJECT fi -
以下のコマンドを実行して、フォルダ「/etc/hotplug.d/iface」に「99-prevent-leak」というファイルを作成します。
nano /etc/hotplug.d/iface/99-prevent-leak -
以下の内容をスクリプトに追加します。
#!/bin/sh if [ "$ACTION" = ifup ] && (ip a s tun0 up) && (iptables -C forwarding_rule -j REJECT); then iptables -D forwarding_rule -j REJECT fi if [ "$ACTION" = ifdown ] && (! ip a s tun0 up) && (! iptables -C forwarding_rule -j REJECT); then iptables -I forwarding_rule -j REJECT fi
(任意)OpenWRT 22.03以降のビルド(nftables)用のKillswitch
VPNトンネルが動作しない場合にトラフィックの漏洩を予防するには、以下の手順に従ってください。
-
カスタムファイアウォールルールファイルを編集します。
sudo nano /etc/firewall.user -
以下の関数を記述します。
# when tun0 interface is down and within nftables no chain "forwarding_rule" exists, then do the following. if (! ip a s tun0 up) && (! nft list chain inet fw4 forwarding_rule; then # add new chain named forwarding_rule nft add chain inet fw4 forwarding_rule # add rule within chain forward to jump to chain forwarding_rule nft add rule inet fw4 forward jump forwarding_rule # add rule within chain forward_rule to reject all traffic nft add rule inet fw4 forwarding_rule reject fi -
次に、自動的にKillswitchに関与するhotplugスクリプトを作成する必要があります。
sudo nano /etc/hotplug.d/iface/99-prevent-leak -
以下の内容をスクリプトに記述します。
#!/bin/sh # if action ifup is triggered, interface tun0 is up and the nftables chain "forwarding_rule" contains text "reject", then flush that chain in order to allow traffic. if [ "$ACTION" = ifup ] && (ip a s tun0 up) && (nft list chain inet fw4 forwarding_rule | grep -q 'reject'); then nft flush chain inet fw4 forwarding_rule fi # if action ifdown is triggered, interface tun0 is not up and the nftables chain "forwarding_rule" does not contain text "reject", then add a rule to that chain in order to reject all traffic. if [ "$ACTION" = ifdown ] && (! ip a s tun0 up) && (! nft list chain inet fw4 forwarding_rule | grep -q 'reject'); then nft add rule inet fw4 forwarding_rule reject fi
自動接続スクリプト
時折、「couldn’t resolve host…」のようなログ出力が出てOpenVPN接続が中断されることがあります。 その場合、VPNトンネルは残りますが、接続は失われます。 自動で再接続するためのスクリプトを作成するには、以下の手順に従ってください。
-
テキストエディタを使用してファイル「/etc/rc.local」を開きます。
sudo nano /etc/rc.local -
以下の行を追加します。
/etc/openvpn/reconnect.sh & -
以下のコマンドを実行して「/etc/openvpn」ディレクトリ内に「reconnect.sh」ファイルを作ります。
sudo nano /etc/openvpn/reconnect.sh -
そのファイル内に、以下のスクリプト内容を入力します。
#!/bin/sh n=10 while sleep 50; do t=$(ping -c $n 8.8.8.8 | grep -o -E '[0-9]+ packets r' | grep -o -E '[0-9]+') if [ "$t" -eq 0 ]; then /etc/init.d/openvpn restart fi done
接続ステータス
上記の手順に従って設定を完了すると、ルータ-は、設定した接続を利用して接続されているはずです。設定が無事に完了したことを確認するには、NordVPNのホームページに移動してください。画面最上部のステータスが「保護されています」になっているはずです。
GUIの手順に従っていてVPN接続を切断したい場合は、「VPN」 > 「OpenVPN」 > 「OpenVPNインスタンス(OpenVPN instances)」セクションに移動し、NordVPNオプションの隣にある「停止(Stop)」ボタンをクリックします。 VPN接続を切断したい場合は、以下のコマンドを実行します。
service openvpn stop