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