Wireguardトンネルを介したトラフィック転送用のLinuxルーター

Wireguardトンネルを介したトラフィック転送用のLinuxルーター

ArchLinuxサーバーを実行する2つの場所があります。

  1. リモートロケーションは、ローカルISPのルータによってNATされます。 ISPはパブリックIPアドレスを提供しないため、ルータのIPアドレスは10.0/16であり、ISPからパブリックIPアドレスを取得できません。
  2. 既定の場所では、ArchLinux サーバーが再実行されていますが、ISP ルーターの背後に NAT が接続されています。ただし、この場合、ISPはパブリックIPv4アドレスを提供します。

私は2台のサーバーでwireguardを実行しています。ホームロケーションのパブリックIPアドレスとルーターのポート転送機能を使用すると、リモートArchLinuxサーバーはホームロケーションへのWireguard P2P接続を確立できます。

私の家の場所からリモートの場所にSSHコマンドを使用してSOCKS5プロキシを設定しました。このSOCKS5プロキシを使用すると、ホームネットワーク上のブラウザがトラフィックをルーティングしてリモートの場所からWebサイトとサービスにアクセスできます。地域のロック解除サービスのユースケースとして考えてください。

私はもう一歩進んで、ホームArchLinuxサーバーをLinuxルーターにしたいと思います。

ホームサーバーにはethポートが1つしかありません。ワイヤレスカードがありますが、接続されていません。ルーティング用の仮想インターフェイスを作成できますが、正確にはわかりませんが、文書を読み取って実行することも可能です。最大の質問は、ホームサーバーからトラフィックを受信し、確立されたWireguardピアトンネルを介してリモートサーバーに転送できるようにルーターを作成する方法です。 SOCKS5プロキシをサポートするブラウザだけでなく、他のデバイスからもリモートサーバーにアクセスできることを願っています。 Wi-Fiの設定に使用する古いルーターがあります。このルーターがホームサーバー - > wireguardトンネル - >リモートサーバーを介してトラフィックをルーティングしたいと思います。

SOCKS5プロキシを介してリモートでWebサイトにアクセスする

ベストアンサー1

ホーム WireGuard サーバーとリモート WireGuard サーバーの間に WireGuard 接続を確立してホーム WireGuard サーバーからのすべてのインターネットトラフィックを転送する場合、リモートサーバーの WireGuard 構成は次のようになります。

[Interface]
PrivateKey = abc123...
Address = 192.168.95.4/24

# packet forwarding
PreUp = sysctl -w net.ipv4.conf.all.forwarding=1
# packet masquerading
PreUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = def456...
AllowedIPs = 192.168.95.1/32
Endpoint = 203.0.113.2:51820
PersistentKeepalive = 25

ホーム WireGuard サーバーの WireGuard 構成は次のとおりです。

[Interface]
PrivateKey = ghi890...
Address = 192.168.95.1/24
ListenPort = 51820

[Peer]
PublicKey = jkl123...
AllowedIPs = 0.0.0.0/0

ホームWireGuardサーバーがこのWireGuard接続を介してLANからトラフィックを転送できるようにするには:

1. ホーム WireGuard サーバーでパケット転送をイネーブルにします。

IPv4 パケット転送をイネーブルにするには、ホーム WireGuard サーバーで次のコマンドを実行します。

sudo sysctl -w net.ipv4.conf.all.forwarding=1
2.ホームWireGuardサーバーから転送されたトラフィックを偽装します。

ホーム WireGuard サーバーで iptables を使用していて、対応する WireGuard インターフェイスがある場合は、wg0次のコマンドを実行して WireGuard インターフェイスに転送されるパケットをなりすまします。

sudo iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
3. ホーム WireGuard サーバーのファイアウォールを調整します

ホームWireGuardサーバーでiptablesを使用していてLANインターフェイスがeth0WireGuardインターフェイスである場合は、wg0このコマンドを実行してLANからWireGuardインターフェイスに接続を転送できます(既存の接続が他の手段を介して再び許可されるようにする)。

sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT

トラフィックをブロックするためにWireGuardサーバーにファイアウォールを設定していない場合、これは不要です。次のコマンドを使用して、既存のiptablesルールセットを確認します。

sudo iptables-save

またはnftablesコマンド:

sudo nft list ruleset
4. ホームLANでインターネットトラフィックをルーティング

WireGuard サーバーの LAN IP を使用してホームルーターまたはホーム LAN の個々のデバイスを調整し、インターネットトラフィックをホーム WireGuard サーバーにルーティングします。

eth0Linux デバイスでは、デバイスの LAN インターフェイスがあり、ホーム WireGuard サーバーの LAN アドレスがある場合、192.168.1.123これを実行するコマンドは次のとおりです。

sudo ip route change default via 192.168.1.123 dev eth0

このコマンドと上記のコマンドはすべて、システム構成を一時的に変更します。システムを再起動しても持続しません(デバイスがDHCPを使用している場合、そのDHCPクライアントはDHCPリースルーティングを更新するときにデフォルト値を変更できます)。永久に維持するには、システムの起動後に実行されるスクリプトに追加してください。

おすすめ記事