ワイヤーガードだから
機器
- LTE モジュールとパブリック IP アドレスを備えた Raspberry Pi 3。 ここに VPN サーバーがあります (以下、本文中では VPN サーバーと呼ばれます)。 エッジウォーカー)
- すべての通信に VPN を使用する必要がある Android スマートフォン
- ネットワーク内でのみ VPN を使用する Linux ラップトップ
VPN に接続するすべてのデバイスは、他のすべてのデバイスに接続できる必要があります。 たとえば、両方のデバイスが VPN ネットワークの一部である場合、電話はラップトップ上の Web サーバーに接続できる必要があります。 セットアップが非常に簡単であることが判明した場合は、デスクトップを (イーサネット経由で) VPN に接続することを検討できます。
有線接続と無線接続の安全性が時間の経過とともにますます低下していることを考慮すると (
ソフトウェアのインストール
WireGuard が提供するのは
私は最新の Fedora Linux 31 を持っていますが、インストールする前にマニュアルを読むのが面倒でした。 たった今パッケージを見つけました wireguard-tools
、それらをインストールしましたが、何も機能しない理由がわかりませんでした。 さらに調査すると、パッケージがインストールされていないことが判明しました wireguard-dkms
(ネットワークドライバーを使用)しかし、それは私のディストリビューションのリポジトリにはありませんでした。
説明書を読んでいたら、正しい手順を実行したでしょう。
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Raspberry Pi に Raspbian Buster ディストリビューションがインストールされており、そこにはすでにパッケージがあります wireguard
、それをインストールします。
$ sudo apt install wireguard
Android スマートフォンにアプリケーションをインストールしました
鍵の取り付け
ピア認証の場合、Wireguard は単純な秘密/公開キー スキームを使用して VPN ピアを認証します。 次のコマンドを使用して、VPN キーを簡単に作成できます。
$ wg genkey | tee wg-laptop-private.key | wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key | wg pubkey > wg-mobile-public.key
これにより、64 つのキー ペア (XNUMX つのファイル) が得られます。 構成内のファイルは参照しませんが、ここに内容をコピーします。各キーは BaseXNUMX の XNUMX 行です。
VPNサーバー(Raspberry Pi)の設定ファイルの作成
設定は非常に簡単で、次のファイルを作成しました /etc/wireguard/wg0.conf
:
[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE
[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32
[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32
いくつかのメモ:
- 適切な場所に、キーを含むファイルの行を挿入する必要があります
- 私のVPNは内部帯域を使用しています
10.200.200.0/24
- チームの場合
PostUp
/PostDown
私は外部ネットワーク インターフェイス wwan0 を持っていますが、別のインターフェイス (eth0 など) を持っている可能性があります。
VPN ネットワークは、次のコマンドで簡単に確立できます。
$ sudo wg-quick up wg0
細かい点: 私が使用した DNS サーバーとして dnsmasq
ネットワークインターフェイスに接続されている br0
, デバイスも追加しました wg0
許可されたデバイスのリストに追加します。 dnsmasq では、これは新しいネットワーク インターフェイス行を構成ファイルに追加することによって行われます。 /etc/dnsmasq.conf
たとえば、次のようになります。
interface=br0
interface=wg0
さらに、UDP リスニング ポート (51280) へのトラフィックを許可する iptable ルールを追加しました。
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
すべてが機能するようになったので、VPN トンネルの自動起動を設定できます。
$ sudo systemctl enable [email protected]
ラップトップ上のクライアント構成
ラップトップ上で構成ファイルを作成する /etc/wireguard/wg0.conf
同じ設定で:
[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820
備考:
- Edgewalker の代わりに、パブリック IP または VPN サーバー ホストを指定する必要があります。
- 設定することにより
AllowedIPs
на10.200.200.0/24
、VPN は内部ネットワークへのアクセスにのみ使用されます。 他のすべての IP アドレス/サーバーへのトラフィックは、引き続き「通常の」オープン チャネルを経由します。 また、ラップトップ上で事前に構成された DNS サーバーも使用されます。
テストと自動起動には同じコマンドを使用します wg-quick
и systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Android スマートフォンでのクライアントのセットアップ
Android フォンの場合、非常によく似た設定ファイルを作成します (これを mobile.conf
):
[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820
ラップトップの構成とは異なり、電話では VPN サーバーを DNS サーバーとして使用する必要があります (行) DNS
)、またすべてのトラフィックを VPN トンネル (AllowedIPs = 0.0.0.0/0
).
ファイルをモバイル デバイスにコピーする代わりに、QR コードに変換できます。
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
QR コードは ASCII としてコンソールに出力されます。 Android VPN アプリからスキャンでき、VPN トンネルが自動的に設定されます。
出力
OpenVPN に比べれば、WireGuard のセットアップはまさに魔法です。
出所: habr.com