Wireguard — Невозможно получить доступ к веб-серверу за брандмауэром

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и не могу заставить его работать, когда UFW на сервере B включен. Однако, когда я отключаю UFW на сервере B, я могу получить доступ к веб-серверу через свой мобильный телефон. Я хочу, чтобы веб-сервер был доступен только через VPN, и не хочу публичного доступа. Может ли кто-нибудь помочь найти, какое правило отсутствует в UFW, которое блокирует мой доступ к веб-серверу сервера B? Я пытался принимать все входящие/исходящие на интерфейсе wg0 на сервере B, но тщетно.

Сервер B и мобильный телефон подключены как одноранговые узлы к серверу. ИИ может отправлять команды ping на сервер 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

Связанный контент