注意: この記事はLLMによって英語から翻訳されたものです。正確性については保証いたしかねますので、あらかじめご了承ください。英語の原文はこちら。
最近、すべてのインターネットトラフィックをVPN経由でルーティングし、キルスイッチを備え、十分なパフォーマンスを持つ小型WiFiアクセスポイントが必要な状況に遭遇しました。使っていないRaspberry Piがあったので、OpenWrtを使ってこの目標を達成することにしました。この記事では、すべてを適切に設定する手順を記録します。この手順はOpenWrt 21.02.3に対して有効です。
OpenWRTの起動#
最初のステップは、OpenWRTをmicroSDカードにフラッシュすることです。Raspberryにはそのためのソフトウェアがありますが、ddやお好みのソフトウェアを使用することもできます。イメージはOpenWrtのウェブサイトから入手できます。
これが完了したら、Raspberry Piとコンピュータをスイッチに接続し、マシンを起動します。192.168.1.1でLuCIインターフェースにアクセスでき、パスワードなしでrootとしてログインできます。
デフォルトでは、microSDカードは数百MBのパーティションのみでフォーマットされているため、OpenWrtの高度な使用を行いたい場合は、パーティションを再フォーマットする必要があるかもしれません。インターネット上のさまざまな手順は私の環境ではうまくいかず、調査する時間も必要もなかったため、記事の最後に参考資料を残しておきます。
管理インターフェースにアクセスしたら、まずSystem/Administrationに移動して適切なパスワードを設定します。SSH設定も変更して、SSHキーでのログインのみを許可することをお勧めします。
基本的なネットワーク設定#
OpenWrtが起動したら、WiFiを有効にして基本的なネットワーク設定を行います。
Network/Wirelessで、ワイヤレスネットワークインターフェースを編集します:
- ニーズに最適な周波数を選択できます。私は
Nモードで5 GHz帯域、自動チャンネルを使用しました。手動で設定したい場合は、StatusメニューのChannel Analysisを使用できます - Mode:
Access Point - Network:
lan - Encryption:
WPA2またはWPA3のいずれか、auto暗号、強力なキー - 詳細設定には、クライアント間通信を防止するオプションもあります
次に、インターフェースを有効にすると、WiFiネットワークが表示されるはずです。radio0設定で追加のWiFi APを追加できることに気付くかもしれません。しかし、そうするとOpenWRTが正常に動作せず、変更が自動的に元に戻されます。
WiFiを使用する前の最後のステップは、Network/Interfacesでインターフェースを設定することです。デフォルトでは、br-lanのような単一のインターフェースがあるはずです。このインターフェースを以下のように編集します:
- Protocol:
Static address - Device
wlan0 Bring up bootにチェック- IPV4 address
192.168.1.1 - Netmask:
255.255.255.0 - Firewall-zone:
lan - DHCPサービスが無効になっていないことを確認
次に、以下の設定でeth0用のインターフェースを追加します:
- Protocol
DHCP Client - Device
eth0 Bring up on bootを有効化- Firewall zone:
wan
すべての設定が完了したら、WiFiでインターネットにアクセスする前の最後のステップとして、Network/Firewallのファイアウォール設定を確認します。2つのゾーンがあるはずです:
lan => wanは、Covered networksとしてlanを持ち、wan宛先へのフォワードを許可し、Input、Output、Forwardがacceptedになっている必要がありますwan => DROPは、Covered networksとしてeth0を持ち、InputとForwardがdrop、Outputがacceptになっている必要があります
Save & Applyをクリックして、WiFiに接続できます。
VPNの設定#
基本設定#
このウォークスルーの最後のステップでは、ProtonVPNとOpenVPNを使用しますが、ほぼすべてのプロバイダーを使用でき、WireGuardなどの他のプロトコルも利用可能です。
まず、いくつかのパッケージをインストールする必要があります。System/Softwareに移動し、利用可能なパッケージに何も表示されない場合はリストを更新して、openvpn-opensslとluci-app-openvpnをインストールします。UIを更新すると、VPN/OpenVPNメニューが表示されるはずです。
次に、OVPN configuration file uploadを使用して、ProtonVPNが提供する設定ファイルをアップロードします。設定がOpenVPNインスタンスのリストに表示されるので、編集します。上部のテキストフィールドにauth-user-passファイルのパスを追加し、2番目のフィールドにユーザー名/パスワードを入力します。

これが完了したら、インスタンスのリストに戻り、Enabledチェックボックスにチェックを入れて、Save & Applyします。この時点で、画面にはVPNが開始されたことが表示されるはずです。
次に、VPN用の新しいインターフェースを設定します。Network/Interfaceで、新しいインターフェースtun0を追加し、プロトコルをUnmanaged、Bring up on bootを有効にし、デバイスとしてtun0を設定します。Firewall Settingsで、ファイアウォールゾーンVPNを作成します。次に、Network/Firewallでこのゾーンをwan => DROPと同じ設定で構成しますが、Allow forward from source zonesにlanを使用し、Forwardをacceptにする点が異なります。また、lan => VPNゾーンに移動し、Allow ForwardにVPNゾーンを追加します。以下のようになるはずです:


これで、VPNがオンの場合は接続がVPNを経由しますが、VPNがダウンしてもインターネットにはアクセスできます。DNSリークを防ぐための最後の作業として、eth0インターフェースでカスタムDNSサーバーを使用し、Use DNS servers advertised by peerオプションを無効にします。
キルスイッチ#
VPNの「キルスイッチ」を設定したい場合(つまり、VPNがダウンした場合にインターネットトラフィックを遮断する場合)、ファイアウォール設定のlan => VPNゾーンを変更するだけで簡単に実現できます。Allow forward to destination zonesからlanを削除するだけです。
自宅に複数のWiFiネットワークがある場合は、マシンがOpenWrtネットワークにのみ自動接続するように設定する必要があります。そうしないと、別のWiFiに接続してしまい、VPNなしでインターネットに接続することになります。
特定のデバイスでVPNを無効にする#
キルスイッチを使用しておらず、特定のデバイスをVPNなしでインターネットに接続したい場合は、vpnbypassパッケージをインストールし、OpenWRTのランディングページでデバイスに静的DHCPリースを設定し、VPN/VPN BypassでLocal IP Address to Bypassを追加できます。
さらに進むために#
これで、接続されたすべてのデバイスがVPN経由でインターネットにアクセスできるルーターが完成しましたが、設定を改善できる点はまだいくつかあります。例えば:
snortパッケージをインストールして、ネットワークのセキュリティを向上させることができます- 外部WiFi APを接続し、このAPに接続されたデバイスがVPNなしでインターネットにアクセスできるようにすることもできます。例えば、Netflixを使いたい場合など(ファイアウォールルールを調整すれば単一のAPでも実現できると思いますが、個人的にはシンプルさを好みます)
- adblockパッケージをインストールして設定し、接続されたすべてのデバイスで広告なしの恩恵を受けられるようにする(例えば、iOSベースのデバイスでは、ブラウザにadblock拡張機能をインストールする方法がありません)
参考資料とクレジット#
参考資料#
- OpenWrt routers and Mullvad VPN (Proton VPN)
- How to set up ProtonVPN on OpenWRT routers (Mullvad VPN)
- OpenVPN client using LuCI (OpenWrt)
- OpenWrt on x86 hardware (PC / VM / server) (OpenWrt)
パーティション変更に関するリソース#
- https://forum.openwrt.org/t/expanding-openwrt-squashfs-image-sdcard/60606/7
- https://forum.openwrt.org/t/how-to-expand-the-space-of-overlay/74093
- https://openwrt.org/docs/guide-user/additional-software/extroot_configuration
- https://java-in-cloud.blogspot.com/2016/08/openwrt-extroot-and-multiple.html
- https://moreless.medium.com/extend-partition-and-file-system-on-raspberr-a48af9e90858
- https://linuxconfig.org/how-to-extend-lede-openwrt-system-storage-with-an-usb-device
- https://linuxconfig.org/how-to-create-loop-devices-on-linux
クレジット#
- カバー写真: Jainath Ponnala(Unsplash)