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 伺服器。我希望僅透過 VPN 存取 Web 伺服器,而不希望公共存取。有人可以幫忙找出 UFW 中缺少哪些規則會阻止我存取伺服器 B 的 Web 伺服器嗎?我嘗試接受伺服器 B 上介面 wg0 上的所有傳入/傳出,但徒勞無功。

伺服器 B 和行動裝置作為對等體連接到伺服器 AI,我能夠從行動裝置和伺服器 A 對伺服器 B 執行 ping 操作。

伺服器 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

相關內容