Рейтинг:0

Сеть Wireguard получает доступ к локальной сети

флаг ng

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

Схема сетевой инфраструктуры

Проблема: Я не могу получить доступ к устройствам в локальной сети с помощью Wireguard и VPN-маршрутизатора на базе Raspberry, который включает службы в локальной сети (камеры, персональный веб-сервер, базы данных).

Цель:

Получите доступ к устройствам и их службам с удаленного сервера и клиентов. Я искал и менял конфигурации, но ничего не работает. Иногда с 10.6.0.1 я могу достучаться до IP 172.16.0.1 и все.

Описание инфраструктуры:

  1. Сервер Wireguard (a) расположен над экземпляром Oracle, как показано на изображении, и имеет следующие функции:

    • Общедоступный IP-адрес 158.43.56.3 (пример IP)

    • Внутренний IP 10.0.0.183 через интерфейс ens3

    • Сервер Wireguard IP 10.6.0.1 через интерфейс wg0

    • Wireguard порт 51820

    • Wireward установлен через pivpn

  2. В локальной сети модем раздает сеть 192.168.100.ХХ (wifi или ethernet)

  3. В сети, которая обеспечивает модем, есть Raspberry Pi 4 (b) с Ubuntu 20.04, работающий как проводной маршрутизатор со следующими функциями:

    • Локальный IP 192.168.100.182 через интерфейс eth0
    • IP Wireguard как узел 10.6.0.5 через интерфейс wg0
    • Локальная подсеть IP 172.16.0.1 через интерфейс eth1 (адаптер usb-ethernet)
    • DHCP-сервер на интерфейсе eth1
  4. Коммутатор подключен к интерфейсу eth1

  5. Различные устройства (сервер, IP-камеры, видеорегистратор) подключаются к коммутатору, и DHCP предоставляет им IP-адрес в формате 172.16.0.XX с диапазоном от 172.16.0.10 до 172.16.0.200 (например, b.a, b.b, b.c)

  6. Устройства в других сетях, подключенных к VPN (например, 10.6.0.3)

Моя текущая настройка выглядит следующим образом (как видите, я пытался):

Сервер WireGuard:

[Интерфейс]
PrivateKey = yL743NyU0M1z7guWxA9kekW7DAOXzO8EDfkAaG+jSGQ=
Адрес = 10.6.0.1/24
МТУ = 1420
Порт прослушивания = 51820

PostUp = iptables -A FORWARD -i wg0 -j ПРИНЯТЬ;
PostUp = iptables -A FORWARD -o wg0 -j ПРИНЯТЬ;
PostUp = iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostUp = sysctl -q -w net.ipv4.ip_forward=1

#PostUp = маршрут del -net 172.16.0.0/24 dev wg0
#iptables -t nat -A PREROUTING -d 172.16.0.0/24 -j DNAT --to-destination 10.6.0.1
#PostUp = iptables -t nat -A PREROUTING -d 172.16.0.0/24 -j DNAT --to-destination 10.6.0.1 
#PostUp = iptables -t filter -A FORWARD -s 10.6.0.0/24 -d 172.16.0.0/24 -j ПРИНЯТЬ              
#PostUp = iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -d 172.16.0.0/24 -j MASQUERADE         

PostDown = sysctl -q -w net.ipv4.ip_forward=0
PostDown = iptables -D FORWARD -i wg0 -j ПРИНЯТЬ;
PostDown = iptables -D FORWARD -o wg0 -j ПРИНЯТЬ;
PostDown = iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

##PostUp = iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ens3 -j TCPMSS --clamp-mss-to-pmtu
##PostUp = iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
##PostUp = iptables -A FORWARD -i ens3 -j ПРИНЯТЬ
##PostUp = sysctl -q -w net.ipv4.ip_forward=1

##PostDown = sysctl -q -w net.ipv4.ip_forward=0
##PostDown = iptables -D FORWARD -i ens3 -j ПРИНЯТЬ
##PostDown = iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
##PostDown = iptables -t mangle -D POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ens3 -j TCPMSS --clamp-mss-to-pmtu

### начать huawei-устройство ###
[Вглядеться]
Публичный ключ = WaP0UPdQWKE0uy3F750cOEeLmLkikdtw0XAw/eGcrFI=
PresharedKey = fMqhe7jxsC9ukEhymPOXCogWMWo82TzIx6Veg+8lslc=
Разрешенные IP-адреса = 10.6.0.2/24
### конец устройства huawei ###
### начать Mac ###
[Вглядеться]
Публичный ключ = ZCAV6xDLswBuqYWs38JYwvx2fwvmR1uEFRIAD760pxI=
PresharedKey = JdtJFaWUG2ECAfLX05WCyz/rrcs6VWFkVgnvEqnqhHo=
Разрешенные IP-адреса = 10.6.0.3/32
Разрешенные IP-адреса = 172.16.0.10/32
ПостоянныйKeepalive = 15
### конец Mac ###
### начать распроутер ###
[Вглядеться]
Открытый ключ = r56sl4HNKHFkz8/r+aGqOHClMuXUt9lGE34gpktP5Q4=
PresharedKey = ukAcmfZUaMuVq53ruIYWmADwDYq0W+0KNjgAQ/ojqH4=
Разрешенные IP-адреса = 10.6.0.5/32
Разрешенные IP-адреса = 172.16.0.10/32
ПостоянныйKeepalive = 15
### завершить распроутер ###

Проводной маршрутизатор Raspberry

[Интерфейс]
PrivateKey = SJXlysVGPfvodzG98EbwrZNvuPqo4sATLKaTB3Kqe20=
Адрес = 10.6.0.5/24
DNS = 1.1.1.1

###PostUp = sysctl -w net.ipv4.ip_forward=1
###PostUp = iptables -A FORWARD -i wg0 -j ПРИНЯТЬ
###PostUp = iptables -A FORWARD -o wg0 -j ПРИНЯТЬ
###PostUp = iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
###PostUp = iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

###PostDown = sysctl -w net.ipv4.ip_forward=0
###PostDown = iptables -D FORWARD -i wg0 -j ПРИНЯТЬ
###PostDown = iptables -D FORWARD -o wg0 -j ПРИНЯТЬ
###PostDown = iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE
###PostDown = iptables -t nat -D POSTROUTING -o eth1 -j MASQUERADE

PostUp = iptables -A FORWARD -i wg0 -j ПРИНЯТЬ; iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE; iptables -A ВПЕРЕД -o wg0 -j ПРИНЯТЬ
PostDown = iptables -D FORWARD -i wg0 -j ПРИНЯТЬ; iptables -t nat -D POSTROUTING -o eth1 -j MASQUERADE; iptables -D ВПЕРЕД -o wg0 -j ПРИНЯТЬ



[Вглядеться]
Открытый ключ = mCK/FAHGtXFBNLS5WpHhSPEBvZRwY09HohD1YkNCNSI=
PresharedKey = ukAcmfZUaMuVq53ruIYWmADwDYq0W+0KNjgAQ/ojqH4=
Конечная точка = 158.43.56.3:51820
#AllowedIPs = 0.0.0.0/0, ::/1
Разрешенные IP-адреса = 172.16.0.10/32 
Разрешенные IP-адреса = 10.6.0.0/24
ПостоянныйKeepalive = 25

Дополнительный клиент (Mac на изображении) в другой локальной сети, далеко

[Интерфейс]
PrivateKey = YH+51/x6MoErmogdOs0UUzIF6W6Oz56t7BhhW9dFvXM=
Адрес = 10.6.0.3/24
DNS = 1.1.1.1

[Вглядеться]
Открытый ключ = mCK/FAHGtXFBNLS5WpHhSPEBvZRwY09HohD1YkNCNSI=
PresharedKey = JdtJFaWUG2ECAfLX05WCyz/rrcs6VWFkVgnvEqnqhHo=
Конечная точка = 158.43.56.3:51820
### Разрешенные IP-адреса = 0.0.0.0/0, ::0/0
Разрешенные IP-адреса = 172.16.0.10/32
Разрешенные IP-адреса = 10.6.0.0/24
ПостоянныйKeepalive = 25

Далее делюсь состоянием инфраструктуры

С сервера Статус сервера Pastebin

От проводного маршрутизатора Raspberry Pastebin малиновый статус

Тесты

От а до б работы

ubuntu@instance-20210915-wireguard:~$ ping 10.6.0.5
PING 10.6.0.5 (10.6.0.5) 56 (84) байт данных.
64 байта из 10.6.0.5: icmp_seq=1 ttl=64 время=75,1 мс
64 байта из 10.6.0.5: icmp_seq=2 ttl=64 время=74,8 мс
^ С
--- 10.6.0.5 статистика пинга ---
2 пакета передано, 2 получено, 0% потери пакетов, время 1001 мс
rtt min/avg/max/mdev = 74,772/74,920/75,069/0,148 мс

От a до b.a не работает

ubuntu@instance-20210915-wireguard:~$ ping 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56 (84) байт данных.
^ С
--- Статистика пинга 172.16.0.1 ---
4 пакета передано, 0 получено, 100% потери пакетов, время 3075 мс

От а до с работы

ubuntu@instance-20210915-wireguard:~$ ping 10.6.0.3
PING 10.6.0.3 (10.6.0.3) 56 (84) байт данных.
64 байта из 10.6.0.3: icmp_seq=1 ttl=64 время=78,5 мс
64 байта из 10.6.0.3: icmp_seq=2 ttl=64 время=119 мс
64 байта из 10.6.0.3: icmp_seq=3 ttl=64 время=77,9 мс
^ С
--- 10.6.0.3 статистика пинга ---
3 пакета передано, 3 получено, 0% потери пакетов, время 2003 мс
rtt min/avg/max/mdev = 77,888/91,816/119,047/19,256 мс

от б до а работает

ubuntu@ubuntu:~$ пинг 10.6.0.1
PING 10.6.0.1 (10.6.0.1) 56 (84) байт данных.
64 байта из 10.6.0.1: icmp_seq=1 ttl=64 время=74,3 мс
64 байта из 10.6.0.1: icmp_seq=2 ttl=64 время=74,5 мс
^ С
--- 10.6.0.1 статистика пинга ---
2 пакета передано, 2 получено, 0% потери пакетов, время 1002 мс
rtt min/avg/max/mdev = 74,334/74,396/74,459/0,062 мс

От с до а работает

user@MacBook-Pro-user Загрузки % ping 10.6.0.1
PING 10.6.0.1 (10.6.0.1): 56 байт данных
64 байта из 10.6.0.1: icmp_seq=0 ttl=64 время=80,921 мс
64 байта из 10.6.0.1: icmp_seq=1 ttl=64 время=78,086 мс
64 байта из 10.6.0.1: icmp_seq=2 ttl=64 время=91,625 мс
^ С
--- 10.6.0.1 статистика пинга ---
3 пакета передано, 3 пакета получено, 0,0% потери пакетов
туда-обратно мин/средн/макс/стандартное отклонение = 78,086/83,544/91,625/5,830 мс

От b до c не работает

ubuntu@ubuntu:~$ пинг 10.6.0.3
PING 10.6.0.3 (10.6.0.3) 56 (84) байт данных.
Из 10.6.0.1 icmp_seq=1 Запрещенный узел назначения
Из 10.6.0.1 icmp_seq=2 Запрещено назначение хоста
^ С
--- 10.6.0.3 статистика пинга ---
2 пакета передано, 0 получено, +2 ошибки, 100% потери пакетов, время 1002 мс

с с на б не работает

user@MacBook-Pro-user Загрузки % ping 10.6.0.5
PING 10.6.0.5 (10.6.0.5): 56 байт данных
92 байта из 10.6.0.1: пункт назначения недоступен, неверный код: 10
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
 4 5 00 5400 25f3 0 0000 3f 01 41a3 10.6.0.3 10.6.0.5

Время ожидания запроса для icmp_seq 0
92 байта из 10.6.0.1: пункт назначения недоступен, неверный код: 10
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
 4 5 00 5400 a5cc 0 0000 3f 01 c1c9 10.6.0.3 10.6.0.5

Время ожидания запроса для icmp_seq 1
^ С
--- 10.6.0.5 статистика пинга ---
3 пакета передано, 0 пакетов получено, 100,0% потери пакетов

От б до б.а работает!!

ubuntu@ubuntu:~$ пинг 172.16.0.10
PING 172.16.0.10 (172.16.0.10) 56 (84) байт данных.
64 байта из 172.16.0.10: icmp_seq=1 ttl=64 время=74,6 мс
64 байта из 172.16.0.10: icmp_seq=2 ttl=64 время=74,5 мс
^ С
--- Статистика пинга 172.16.0.10 ---
2 пакета передано, 2 получено, 0% потери пакетов, время 1002 мс
rtt min/avg/max/mdev = 74,455/74,541/74,627/0,086 мс

Ну и цель - достучаться хотя бы с IP 10.6.0.1 до 172.16.0.XX.

Используя OpenVPN, я могу без проблем определить инфраструктуру, но пропускная способность ужасна.

Я так плохо работаю с сетевыми инфраструктурами, извините.

Что дальше?

Используйте Nginx для использования сервисов и разверните Apache Airflow для обработки информации, которую я генерирую в своей локальной сети.

заранее спасибо

Изменить: я разместил это раньше не на том сайте

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.