NordVPNはOpenWrtに対応していますか?
報告によると、OpenWRTファームウェアのルーターはNordVPNのようなVPNに対応しているようです。 ただし、以下の設定はNordVPNによってテストされたものではなく、寛大なユーザーの皆さまがテストし、共有してくださった方法です。 特に、OpenWRTコミュニティで精力的に活動されているUnwind様に感謝申し上げます。Unwind様からは、最新のOpenWRTに関するガイドを定期的に提供していただいています。
GUIガイド
このガイドでは、OpenWrtファームウェアを使用し、LuCIウェブインターフェイス経由でNordVPN接続を設定する方法を説明します。
-
インターネットブラウザにローカルIPアドレスを入力してログインし、お使いのOpenWrtルーターのLuCIインターフェイスにアクセスします。
デフォルトのIPアドレスは192.168.1.1、ユーザー名(Username)はrootです。
注: _デフォルトではパスワードは設定されていませんので、パスワード欄は空白で構いません。 ただし、ログイン時にパスワードを設定するよう求めるメッセージが表示されます。
パスワードを設定するには、システム(System) > 管理(Administration)へと移動して操作を行います。 -
ログイン後に、「システム(System)」タブ、そして「ソフトウェア(Software)」を選択します。
- 「リストを更新(Update lists)」ボタンをクリックし、処理が完了するまで待ってから「閉じる(Dismiss)」をクリックします。
-
「フィルタ(Filter)」フィールドに以下の名前を入力して「インストール(Install…)」をクリックし、パッケージをインストールします。
- openvpn-openssl
- ip-full
-
luci-app-openvpn
- 「保存して適用(Save & Apply)」をクリックしてから、ルーター画面を更新します。 これで、VPNという名前の新しいタブが表示されるようになったはずです。 そのタブをクリックして、ドロップダウンから「OpenVPN」を選択します。
-
ここで、OpenVPNクライアント設定ファイルをダウンロードする必要があります。
その後、Nordアカウントから推奨サーバーに接続できます。
以下の手順に従って、手動接続設定用のサービス認証情報をご確認ください。
-
-
お使いのNordアカウントにログインして「NordVPN」をクリックし、手動設定(Manual setup)の「サービスの認証情報(Service credentials)」をクリックします。そうすると、手動接続設定に必要なユーザー名とパスワードを確認できます。
-
OpenVPNクライアント設定ファイルをダウンロードする必要があります。
以下の手順に従って、接続に最適なサーバーをご確認ください。
-
Nordアカウントにログインし、「NordVPN」をクリックします。
-
詳細設定(Advanced Settings)までスクロールし、「NordVPNを手動で設定(Set up NordVPN manually)」をクリックします。
-
「推奨サーバー(Server recommendation)」タブを選択します。
お客様の所在地に応じて、アルゴリズムにより最適なサーバーが推奨されます。
-
「詳細フィルタ(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」をクリックし、手動設定(Manual setup)の「サービスの認証情報(Service credentials)」をクリックします。そうすると、手動接続設定に必要なユーザー名とパスワードを確認できます。
-
-
「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. 名前(name)セクションで、「nordvpntun」と入力します。
3. 「プロトコル(protocol)」をクリックし、「未管理(unmanaged)」を選択します。
4. 「インターフェース(Interface)」ドロップダウンで、下の「-- custom --」フィールドに「tun0」と名前を入力し、Enterキーを押します。
- 「インターフェースを作成(Create interface)」と「保存(Save)」をクリックします。
- 最上部の「ネットワーク(Network)」タブを選択し、「ファイアーウォール(Firewall)」セクションに移動します。
- 「追加(Add)」ボタンをクリックして以下のように変更を加えます。```
- 「vpnfirewall」と名前を付けます。
2. 「入力(Input)」オプションを「拒否(Reject)」に設定します。 .
3. 「出力(Output)」を「許可(Accept)」、「転送(Forward)」を「拒否(Reject)」に設定します。
4. 「偽装(Masquerading)」オプションにチェックを入れます。
5. 「MSSクランプ(MSS clamping)」オプションにチェックを入れます。
6. 「カバーネットワーク(Covered Networks)」ドロップダウンメニューから「nordvpntun」を選択します。
7. 「送信元ゾーンからの転送を許可(Allow forward from source zones)」ドロップダウンメニューで「plan」を選択します。
8. 「保存(Save)」ボタンをクリックします。
```

18. 「ゾーン(Zones)」セクションで、「lan」という名前のゾーンを見つけ、「編集(Edit)」ボタンをクリックします。

19. 「宛先ゾーンへの転送を許可(Allow Forward to Destination Zones)」ドロップダウンで「NordVPN」エントリーにチェックを入れます。

20. 画面最上部の「ネットワーク(Network)」を再度クリックし、ドロップダウンリストから「DHCPおよびDNS(DHCP and DNS)」を選択します。
21. 「一般設定(General settings)」タブでDNS転送オプションを探し、NordVPN DNSアドレスを入力します。 アドレスは103.86.96.100と103.86.99.100です。

22. 「Resolvおよびホストファイル(Resolv and hosts files)」に移動して「Resolvファイルを無視(Ignore resolve file)」にチェックを入れ、「保存して適用(Save & Apply)」ボタンをクリックします。

23. VPN > OpenVPNタブに戻ります。
24. 「OpenVPNインスタンス(OpenVPN instances)」セクションで、リストのNordVPNオプションの隣にある「有効(Enable)」オプションにチェックを入れ、「保存して適用(Save & Apply)」ボタンをクリックします。

25. 「開始(Start)」ボタンを再度クリックして、VPNサーバーに接続します。
## CLIガイド
より高度なチュートリアルをお探しの場合は、このガイドをご利用ください。 OpenWrtを使用したVPNの利点を活用するには、OpenWrtファームウェアと有効化したOpenVPNクライアントの両方を使用したルーターが必要です。 ファームウェアのメイン画面は[https://openwrt.org/](https://openwrt.org/)です。
1. まず、LAN IPアドレスを使ったSSHでルーターにアクセスできるようにする必要があります。 デフォルトのIPアドレスは192.168.1.1、ユーザー名はrootです。ただし、デフォルトの値を変更している場合は、IPアドレスは異なる場合があります。
2. デフォルトでは、ルーターのファームウェアイメージにはOpenVPNパッケージはありません。 以下のコマンドを実行してインストールします。
```
opkg update
opkg install openvpn-openssl
opkg install ip-full
```
追加でLuCIのOpenVPN設定コンポーネントもインストールできますが、これはオプションです。 インストールしたい場合は、以下のコマンドを実行します。
```
opkg install luci-app-openvpn
```
3. OpenVPNパッケージをインストールしたら、以下のコマンドを実行することで、ルーターが起動する時はいつでも自動でOpenVPNを起動できます。
```
/etc/init.d/openvpn enable
```
4. 次に、サーバー設定ファイルをダウンロードする必要があります。 以下の手順で行います。
1. [Nordアカウント](https://my.nordaccount.com/)にログインし、「NordVPN」をクリックします。

2. \*\*詳細設定(Advanced Settings)\*\*までスクロールし、「NordVPNを手動で設定(Set up NordVPN manually)」をクリックします。

3. 「推奨サーバー(Server recommendation)」タブを選択します。 お客様の所在地に応じて、アルゴリズムにより最適なサーバーが推奨されます。

4. 「詳細フィルタ(Advanced filters)」をクリックして、「サーバーの種類(Server type)」と「セキュリティプロトコル(Security protocol)」を選択することでお勧めのサーバーをカスタマイズできます。


特定のサーバーを選択したい場合、以下の手順に従ってください。
1. 「NordVPNを手動で設定(Set up NordVPN manually)」で「OpenVPN設定ファイル(OpenVPN configuration files)」を選択します。

2. 下にスクロールするか、検索(Search) バーを使って接続したいサーバーを見つけます。 その後、「UDPをダウンロード(Download UDP)」または「TCPをダウンロード(Download TCP)」をクリックしてダウンロードを行います。

5. このガイドでは、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](https://downloads.nordcdn.com/configs/archives/certificates/servers.zip))からアーカイブをダウンロードできます。 ダウンロードしたアーカイブ内には、.crtと.key の拡張子を持つファイルがあります。 このファイルは各VPNサーバーに対応するものです。
6. NordVPN用のOpenVPNの設定では、OpenVPNを開始するたびにNordVPNのサービス認証情報(ユーザー名とパスワード)を入力するよう求められます。 そこで、認証情報が自動で入力されるよう、いくつかの調整を行います。
まず、このプロセスを簡単にするために、以下のコマンドを実行してnanoテキストエディタをインストールします:
```
opkg install nano
```
または、すでに搭載されているviテキストエディタを使っても構いません。 テキストエディタに関する詳細は、こちらの[記事](https://openwrt.org/docs/guide-user/base-system/user.beginner.cli)をご覧ください。
次に、nanoテキストエディタを使ってダウンロードしたサーバー設定ファイルを開きます。 この例では、コマンドは以下のようになります。
```
nano /etc/openvpn/uk2054.nordvpn.com.udp.ovpn
```
その後、文字列「auth-user-pass」に「secret」という言葉を引用符なしで追加します。 次のような文字列となるはずです:
```
auth-user-pass secret
```
NordVPNのサービス認証情報を保管するための新しい _機密ファイル_ を作成する必要があります。 作成するには、次のコマンドを実行します:
```
nano /etc/openvpn/secret
```
これで、新しいファイルが作成され、nanoテキストエディタで開きます。
ファイルの1行目にNordVPNサービスのユーザー名、2行目にパスワードを入力します。
NordVPNサービス認証情報(ユーザー名とパスワード)は、[Nordアカウントダッシュボード](https://my.nordaccount.com/dashboard/nordvpn/)で確認できます。
7. ダウンロードした設定ファイルを使用して、以下のいずれかの方法でOpenVPNを設定します。
1. ファイルの拡張子を「.ovpn」から「.conf」に変更します。そうすると、OpenVPNが拡張子でファイルを自動的に見つけられるようになります。
これには、mvコマンドを使用します。
```
mv /etc/openvpn/uk2054.nordvpn.com.udp.ovpn /etc/openvpn/uk2054.nordvpn.com.udp.conf
```
2. 「/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回のみとなります。
8. 以下のコマンドを実行して、新しいネットワークインターフェースを作成します。
```
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
```
9. 新しいファイアウォールゾーンを作成し、以下のコマンドを実行して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行が表示されます。
10. 次に、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」は、以下のように下3行に文字列が追加された「wan」セクションを含んでいるはずです。
```
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トンネルが切断された場合にトラフィックの漏洩を予防するには、以下の手順に従ってください。
1. テキストエディタを使用してファイアウォールファイルを開きます。
```
sudo nano /etc/firewall.user
```
2. 以下の内容を追加します。
```
\# 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
```
3. 以下のコマンドを実行して、フォルダ「/etc/hotplug.d/iface」に「99-prevent-leak」というファイルを作成します。
```
nano /etc/hotplug.d/iface/99-prevent-leak
```
4. 以下の内容をスクリプトに追加します。
```
#!/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トンネルが動作しない場合にトラフィックの漏洩を予防するには、以下の手順に従ってください。
1. カスタムファイアウォールルールファイルを編集します。
```
sudo nano /etc/firewall.user
```
2. 以下の関数を記述します。
```
\# 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
```
3. 次に、自動的にKillswitchに関与するhotplugスクリプトを作成する必要があります。
```
sudo nano /etc/hotplug.d/iface/99-prevent-leak
```
4. 以下の内容をスクリプトに記述します。
```
#!/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トンネルは残りますが、接続は失われます。 自動で再接続するためのスクリプトを作成するには、以下の手順に従ってください。
1. テキストエディタを使用してファイル「/etc/rc.local」を開きます。
```
sudo nano /etc/rc.local
```
2. 以下の行を追加します。
```
/etc/openvpn/reconnect.sh &
```
3. 以下のコマンドを実行して「/etc/openvpn」ディレクトリ内に「reconnect.sh"」ファイルを作ります。
```
sudo nano /etc/openvpn/reconnect.sh
```
4. そのファイル内に、以下のスクリプト内容を入力します。
```
#!/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のホームページ](https://nordvpn.com)に移動してください。画面最上部のステータスが「保護されています」になっているはずです。
GUIの手順に従っていてVPN接続を切断したい場合は、「VPN」 > 「OpenVPN」 > 「OpenVPNインスタンス(OpenVPN instances)」セクションに移動し、NordVPNオプションの隣にある「停止(Stop)」ボタンをクリックします。 VPN接続を切断したい場合は、以下のコマンドを実行します。
```
service openvpn stop
```