Сервер WireGuard с домашним IPv6-адресом в среде OpenWrt + Starlink

9 min

language: ja bn en es hi pt ru zh-cn zh-tw

Привет, это Munou.

Поскольку в прошлой статье мне удалось получить публичный IPv6-адрес для домашней сети, я сделаю следующее:

  • Сервер: OpenWrt + WireGuard Server

    • Интерфейс: wg1(10.2.0.0/24)

    • В качестве выходного IP используется домашняя линия, среда без ограничений пропускной способности (таких как лимиты на VPS и т. д.)

  • Клиент: смартфон, ноутбук

Кроме того, цель на этот раз — обеспечить связь от этого сервера WireGuard к интерфейсу wg0 (10.1.0.0/24) сервера WireGuard, размещенного на ConoHa VPS.

Создав постоянную VPN-среду на интерфейсе wg1, можно будет всегда находиться во внутренней сети, не беспокоясь о пропускной способности. Есть опасения, что сама возможность подключения к этому сегменту сети может стать уязвимостью, но это немного лучше, чем публикация через публичный IP, да и если кто-то сможет подключиться к интерфейсу wg0, то это в любом случае конец.

Благодаря этим мерам на стороне OpenWrt можно будет запустить Dnsmasq в качестве внутреннего DNS-сервера и постоянно использовать блокировку рекламы.

WireGuard на OpenWrt

Установите wireguard-tools.

root@OpenWrt:~# apk search wireguard
kmod-wireguard-6.12.74-r1
luci-proto-wireguard-26.120.35050~a611522
prometheus-node-exporter-ucode-wireguard-2024.02.07-r2
rpcd-mod-wireguard-2
wireguard-tools-1.0.20250521-r1
root@OpenWrt:~# apk add wireguard-tools-1.0.20250521-r1

Также, я полагаю, что установка luci-proto-wireguard-26.120.35050~a611522 позволит настраивать WireGuard через LuCI в веб-интерфейсе, но я не буду её устанавливать.

Настройка

/etc/config/network

Создайте интерфейс на стороне сервера следующим образом:

~~~
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'wg1 server private key'
        option listen_port '51820'
        list addresses '10.2.0.1/24'
        list addresses 'fd02::1/64'
        option mtu '1420'
~~~

Ниже добавьте настройки на стороне клиента, которые будут разрешены. Вообще-то, лучше было бы установить PreSharedKey и настроить общий ключ, но пока пропустим это.

config wireguard_wg1
        option public_key 'wg1 client public key'
        list allowed_ips '10.2.0.2/32'
        list allowed_ips 'fd02::2/128'
        list allowed_ips 'client ipv6 addr ::2/128'
        option persistent_keepalive '25'
        option route_allowed_ips '1'

Создайте wg1.conf на стороне клиента. Весь трафик будет проходить через роутер OpenWrt.

[Interface]
PrivateKey = "wg1 client public key "
Address = 10.2.0.2/24, fd02::2/64, client ipv6 addr::2/64
DNS = 10.2.0.1 # Уже настроено, так как DNS-сервер поднят на Dnsmasq
[Peer]
PublicKey = "wg1 server public key"
Endpoint = "wg1 ipv6 addr :51820"
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

В таком виде трафик будет блокироваться фаерволом, поэтому создайте зону wg, откройте порт 51820/udp на стороне IPv6 wan, разрешите LAN для домашней среды и позвольте wg выходить во внешнюю сеть через wan.

В случае с IPv6 NAT обычно не требуется, поэтому я его явно отключаю.

/etc/config/firewall

config zone
        option name 'wg'
        list network 'wg1'
        list network 'wg0'
        option input 'ACCEPT'
        option forward 'ACCEPT'
        option output 'ACCEPT'
        option masq '1'
        option masq6 '0'
config rule
        option name 'Allow-WireGuard-IPv6'
        option src 'wan'
        option family 'ipv6'
        option proto 'udp'
        option dest_port '51820'
        option target 'ACCEPT'
config forwarding
        option src 'wg'
        option dest 'lan'
config forwarding
        option src 'wg'
        option dest 'wan'

В этом состоянии связь с wg0 невозможна, поэтому добавим настройки.

Предполагается, что настройки на стороне сервера wg0 также будут добавлены соответствующим образом (здесь они опущены).

/etc/config/network

config route
        option interface 'wg0'
        option target '10.1.0.0/24'
config interface 'wg0'
        option proto 'wireguard'
        option private_key 'wg0 client private key'
        list addresses '10.1.0.99/24'
config wireguard_wg0
        option public_key 'wg0 server public key'
        option endpoint_host 'wg0 server addr'
        option endpoint_port '51820'
        list allowed_ips '10.1.0.0/24'
        list allowed_ips '10.2.0.0/24'
        option persistent_keepalive '25'

На этом настройка в основном завершена, а для dnsmasq сделайте следующее:

В моей среде он был установлен изначально, так что достаточно просто его включить.

/etc/init.d/dnsmasq enable
/etc/init.d/dnsmasq start

Затем добавьте список блокировки, например в /etc/dnsmasq.d/adblock.conf.

/etc/init.d/dnsmasq restart

На этом этапе остается только перезапустить службы.

/etc/init.d/network restart
/etc/init.d/firewall restart

Это завершает настройку среды dual-stack, работающей как через IPv4 с CGNAT, так и через IPv6.

Тест скорости из среды OpenWrt

Ниже приведены результаты для проводного подключения без WireGuard:

$ speedtest-go -s 48463 
    speedtest-go v1.7.10 (git-dev) @showwin
✓ ISP: 206.83.125.125 (Starlink) [35.6893, 139.6899] 
✓ Found 1 Specified Public Server(s)
✓ Test Server: [48463] 5.80km Tokyo by IPA CyberLab 400G
✓ Latency: 41.037747ms Jitter: 8.459256ms Min: 24.163074ms Max: 57.008632ms
✓ Packet Loss Analyzer: Running in background (<= 30 Secs)
✓ Download: 173.63 Mbps (Used: 211.22MB) (Latency: 35ms Jitter: 6ms Min: 25ms Max: 41ms)
✓ Upload: 45.99 Mbps (Used: 81.23MB) (Latency: 35ms Jitter: 29ms Min: 23ms Max: 136ms)
✓ Packet Loss: N/A

Ниже приведены результаты из VPN-среды wg1 при подключении по Wi-Fi 5 ГГц:

$ speedtest-go -s 48463 
    speedtest-go v1.7.10 (git-dev) @showwin
✓ ISP: 206.83.125.125 (Starlink) [35.6893, 139.6899] 
✓ Found 1 Specified Public Server(s)
✓ Test Server: [48463] 5.80km Tokyo by IPA CyberLab 400G
✓ Latency: 28.199611ms Jitter: 1.516613ms Min: 26.461289ms Max: 31.90411ms
✓ Packet Loss Analyzer: Running in background (<= 30 Secs)
✓ Download: 79.63 Mbps (Used: 114.99MB) (Latency: 98ms Jitter: 39ms Min: 27ms Max: 151ms)
✓ Upload: 65.86 Mbps (Used: 96.92MB) (Latency: 62ms Jitter: 73ms Min: 26ms Max: 285ms)
✓ Packet Loss: N/A

Теперь вы можете получить доступ к этой VPN-среде wg1 со смартфона даже из внешней сети.

Related Posts