Я надеюсь, что вы можете помочь мне с моей проблемой. Я строю сеть для личного пользования и обнаружил некоторые проблемы, у меня нет опыта работы с сетями. Я объясню, используя прикрепленное изображение:
Схема сетевой инфраструктуры
Проблема:
Я не могу получить доступ к устройствам в локальной сети с помощью Wireguard и VPN-маршрутизатора на базе Raspberry, который включает службы в локальной сети (камеры, персональный веб-сервер, базы данных).
Цель:
Получите доступ к устройствам и их службам с удаленного сервера и клиентов. Я искал и менял конфигурации, но ничего не работает. Иногда с 10.6.0.1 я могу достучаться до IP 172.16.0.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
В локальной сети модем раздает сеть 192.168.100.ХХ (wifi или ethernet)
В сети, которая обеспечивает модем, есть 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
Коммутатор подключен к интерфейсу eth1
Различные устройства (сервер, IP-камеры, видеорегистратор) подключаются к коммутатору, и DHCP предоставляет им IP-адрес в формате 172.16.0.XX с диапазоном от 172.16.0.10 до 172.16.0.200 (например, b.a, b.b, b.c)
Устройства в других сетях, подключенных к 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 для обработки информации, которую я генерирую в своей локальной сети.
заранее спасибо
Изменить: я разместил это раньше не на том сайте