Wireguard - 无法访问防火墙后面的 Web 服务器

Wireguard - 无法访问防火墙后面的 Web 服务器

我有一台服务器 A,其 WG 隧道 IP 为 10.9.0.1,一台服务器 B,其 WG 隧道 IP 为 10.9.0.4,我的移动设备,其 WG 隧道 IP 为 10.9.0.3。

服务器 A 和 B 已启用 UFW 并允许传入端口为 SSH 和 WG 端口。

我将通过手机连接到服务器 A 进行所有互联网活动,一切正常。我尝试通过手机浏览器访问在服务器 B 上运行的 Web 服务器http://10.9.0.4启用服务器 B 上的 UFW 后无法使其工作。但是,当我禁用服务器 B 上的 UFW 后,我可以通过手机访问 Web 服务器。我希望 Web 服务器仅通过 VPN 访问,不希望公开访问。有人能帮我找出 UFW 中缺少的哪条规则阻止我访问服务器 B 的 Web 服务器吗?我尝试在服务器 B 上的接口 wg0 上接受所有传入/传出,但徒劳无功。

服务器 B 和移动设备作为对等体连接到服务器 A,并且能够从移动设备和服务器 A ping 通服务器 B。

服务器 B 的 UFW

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)  

服务器 A 的 UFW

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  

编辑:我已在服务器 B 上禁用 UFW,并用如下所示的 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,但我看到它说您的“路由”策略在服务器 B ufw 规则上设置为拒绝,这意味着所有来自不同主机并注定要到达服务器 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

相关内容