背景:
ローカル(プライベート)ネットワークにWireguard VPNサーバーを設定しました。 [プライベートネットワーク仮定:192.168.1.0/24] Wireguardクライアントは同じIPネットワーク192.168.1.Xを持っています。
私のネットワークに固定ローカルIPアドレスを使用するいくつかの非Wireguard互換デバイス(IPカメラ、DVR)があります。
クエリ:
Wireguardクライアントを使用してWireguardサーバー(ローカルネットワークの外側)に接続するときは、ローカル固定IPアドレスを使用してWireguardと互換性のないデバイスにアクセスしたいと思います。 IP競合が発生しないようにしました。
答え1
WireGuardを介してさまざまな外部ホストをLANに接続する場合は、次の3つの主なタスクを実行する必要があります。
AllowedIPs
各デバイスのWireGuard構成設定に、LANのIPブロック(または少なくとも接続する各LAN側ホストのIPアドレス)が含まれています。外部所有者- LAN側WireGuardホストでのパケット転送設定(例
sysctl -w net.ipv4.ip_forward=1
:) - LAN側WireGuardホストでパケットマスカレーディング(SNATとも呼ばれます)の設定(通常はルールを介して
iptables
実行)
完全な例は次のとおりです。
https://www.procustodibus.com/blog/2020/11/wireguard-point-to-site-config/
この例では、LANのサブネットがあるため、外部ホスト(例ではエンドポイントA)のWireGuard設定の設定192.168.200.0/24
です。AllowedIPs
AllowedIPs = 192.168.200.0/24
この例では、パケット転送と偽装は、LAN側WireGuardホスト(例ではホストβ)のWireGuard構成に次のものを追加することによって行われます。
# IP forwarding
PreUp = sysctl -w net.ipv4.ip_forward=1
# IP masquerading
PreUp = iptables -t mangle -A PREROUTING -i wg0 -j MARK --set-mark 0x30
PreUp = iptables -t nat -A POSTROUTING ! -o wg0 -m mark --mark 0x30 -j MASQUERADE
LAN 側 WireGuard ホストの WireGuard インターフェイスがwg0
動作している場合、外部ホストは LAN アドレスを介して LAN 内のすべてのホストに接続できます。例では、外部ホスト(エンドポイントA)はLANホスト(エンドポイントB)に接続できます。 )エンドポイントBのローカルアドレスを介して192.168.200.22
。
答え2
VPNサーバー(VPN 10.5.0.1/24)として機能するデバイスとLAN 192.168.50.1/24がある場合は、外部クライアント(10.5.0.4)を作成して元のLAN(192.168.50.185など)のデバイスにアクセスできます。 )。
私はこれを通してこれを達成します:
IP4転送を有効にする
/etc/sysctl.conf
/etc/wireguard/wg0.conf
(フィールド)行に追加[interface]
:PreUp = sysctl -w net.ipv4.ip_forward=1; iptables -I INPUT 1 -i wg0 -j ACCEPT;iptables -I FORWARD 1 -i eth0 -o wg0 -j ACCEPT; iptables -I FORWARD 1 -i wg0 -o eth0 -j ACCEPT
変更スロットの適用
sudo systemctl restart wg-quick@wg0
トラフィックを目的のホストに転送するようにクライアントを設定します。つまり、クライアントのマイファイルの下にあります
[Peer]
。AllowedIPs = 10.5.0.1/24;192.168.50.185/32
お役に立てば幸いです。