Wireguard - Невозможно получить доступ к веб-серверу за брандмауэром
У меня есть сервер A с IP-адресом туннеля WG 10.9.0.1, сервер B с IP-адресом туннеля WG 10.9.0.4 и мой мобильный телефон с IP-адресом туннеля WG 10.9.0.3.
На серверах A и B включен UFW и разрешены входящие порты в качестве портов SSH и WG.
Я буду подключаться к серверу A через свой мобильный телефон для всех моих интернет-операций, которые работают нормально. Я пытаюсь получить доступ к веб-серверу, работающему на сервере B, в моем мобильном браузере по http://10.9.0.4/ и не могу заставить его работать, когда на сервере B включен UFW. Однако, когда я отключаю UFW на сервере B, я могу получить доступ к веб-серверу через мой мобильный телефон. Я хочу, чтобы к веб-серверу обращались только по VPN, и я не хочу публичного доступа. Может кто-нибудь помочь, пожалуйста, найти, какое правило отсутствует в UFW, который блокирует мой доступ к веб-серверу Сервера B? Я попытался принять все входящие / исходящие на интерфейсе wg0 на сервере B, но тщетно.
Сервер B и мобильное устройство подключены как одноранговые к серверу AI и могут пропинговать сервер B с мобильного телефона и с сервера A.
UFW для сервера B
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
5440 ALLOW IN Anywhere
44787/udp ALLOW IN Anywhere
80,443/tcp on wg0 ALLOW IN Anywhere
5440 (v6) ALLOW IN Anywhere (v6)
44787/udp (v6) ALLOW IN Anywhere (v6)
80,443/tcp (v6) on wg0 ALLOW IN Anywhere (v6)
443 ALLOW OUT Anywhere
53 ALLOW OUT Anywhere
80 ALLOW OUT Anywhere
443 (v6) ALLOW OUT Anywhere (v6)
53 (v6) ALLOW OUT Anywhere (v6)
80 (v6) ALLOW OUT Anywhere (v6)
UFW для сервера A
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
5440 ALLOW IN Anywhere
44787 ALLOW IN Anywhere
44787 (v6) ALLOW IN Anywhere (v6)
53 ALLOW OUT Anywhere
80,443/tcp ALLOW OUT Anywhere on wg0
53/udp ALLOW OUT Anywhere on wg0
53 (v6) ALLOW OUT Anywhere (v6)
80,443/tcp (v6) ALLOW OUT Anywhere (v6) on wg0
53/udp (v6) ALLOW OUT Anywhere (v6) on wg0
Изменить: я отключил UFW на сервере B и заменил на iptables, как показано ниже. Проблема существует.
#!/usr/bin/env bash
#############################
# SETUP
#############################
# Define your hostname
DEMOSTHENES=X.X.X.X
# Clear all rules
/sbin/iptables -F
iptables -I FORWARD -s 10.9.0.0/24 -i wg0 -j ACCEPT #sample rule to allow packet forwarding from your wg subnet
#############################
# MANAGEMENT RULES
#############################
# Allow SSH (alternate port)
/sbin/iptables -A INPUT -p tcp -d $DEMOSTHENES --dport 5440 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -d $DEMOSTHENES --dport 44787 -j ACCEPT
/sbin/iptables -A INPUT -p udp -d $DEMOSTHENES --dport 44787 -j ACCEPT
# Allow web server access
iptables -A INPUT -i wg0 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o wg0 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -j DROP
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere v8.domain.co tcp dpt:5440
ACCEPT tcp -- anywhere v8.domain.co tcp dpt:44787
ACCEPT udp -- anywhere v8.domain.co udp dpt:44787
ACCEPT tcp -- anywhere anywhere multiport dports http,https state NEW,ESTABLISHED
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 10.9.0.0/24 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere multiport sports http,https state ESTABLISHED
1 ответ
Я не использовал ufw раньше, но вижу, что ваша политика "перенаправления" настроена на запрещение правил UFW на сервере B, что означает, что все пакеты, поступающие с другого хоста и предназначенные для завершения на сервере B, блокируются (если я правильно понял). Попробуйте либо создать правило, разрешающее пересылку пакетов (также отредактируйте файл /etc/sysctl.conf и убедитесь, что вы пересылаете пакеты ipv4 и ipv6; net.ipv4.ip_forward=1 и net.ipv6.conf.all.forwarding=1) или установите политику по умолчанию для цепочки FORWARD, чтобы принять и посмотреть, что происходит. Я использую iptables, и он очень привередливый, иногда использование Insert вместо Append для правила имеет все значение.
iptables -I FORWARD -s 10.9.0.0/24 -i wg0 -j ACCEPT #sample rule to allow packet forwarding from your wg subnet
iptables -P FORWARD ACCEPT #change default policy on filter tables FORWARD chain