IPsec (strongswan) 如何在不打開 UFW 埠的情況下工作?
我需要在伺服器 A 和 B 之間設置站點到站點 VPN,其中伺服器 A 由我管理,伺服器 B 由客戶端管理。伺服器 A 正在執行 Ubuntu 20.04,我正在使用 strongswan 來設置我的 VPN。我正在使用 UFW 來管理伺服器 A 的防火牆。
A的
16.XX.XXX.17
公網IP地址: B的公網IP地址:14.XXX.XXX.94
現在,在進行必要的配置更改以設置 VPN 並將其打開後,我可以看到以下日誌
/var/log/syslog
Mar 21 13:58:47 worker0 charon: 01[ENC] parsed IKE_AUTH response 1 [ IDr AUTH N(ESP_TFC_PAD_N) SA TSi TSr ] Mar 21 13:58:47 worker0 charon: 01[IKE] authentication of '14.XXX.XXX.94' with pre-shared key successful Mar 21 13:58:47 worker0 charon: 01[IKE] IKE_SA s-to-s[1] established between 16.XX.XXX.17[16.XX.XXX.17]...14.XXX.XXX.94[14.XXX.XXX.94] Mar 21 13:58:47 worker0 charon: 01[IKE] scheduling reauthentication in 2644s Mar 21 13:58:47 worker0 charon: 01[IKE] maximum IKE_SA lifetime 3184s Mar 21 13:58:47 worker0 charon: 01[IKE] received ESP_TFC_PADDING_NOT_SUPPORTED, not using ESPv3 TFC padding Mar 21 13:58:47 worker0 charon: 01[CFG] selected proposal: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ Mar 21 13:58:47 worker0 charon: 01[IKE] CHILD_SA s-to-s{1} established with SPIs c97fea32_i f60175ca_o and TS 10.132.86.142/32 === 10.128.28.96/27 Mar 21 13:58:53 worker0 charon: 14[NET] received packet: from 14.XXX.XXX.94[4500] to 16.XX.XXX.17[4500] (80 bytes) Mar 21 13:58:53 worker0 charon: 14[ENC] parsed INFORMATIONAL request 0 [ ] Mar 21 13:58:53 worker0 charon: 14[ENC] generating INFORMATIONAL response 0 [ ] Mar 21 13:58:53 worker0 charon: 14[NET] sending packet: from 16.XX.XXX.17[4500] to 14.XXX.XXX.94[4500] (80 bytes) Mar 21 13:58:58 worker0 charon: 07[NET] received packet: from 14.XXX.XXX.94[4500] to 16.XX.XXX.17[4500] (80 bytes) Mar 21 13:58:58 worker0 charon: 07[ENC] parsed INFORMATIONAL request 1 [ ] Mar 21 13:58:58 worker0 charon: 07[ENC] generating INFORMATIONAL response 1 [ ] Mar 21 13:58:58 worker0 charon: 07[NET] sending packet: from 16.XX.XXX.17[4500] to 14.XXX.XXX.94[4500] (80 bytes) Mar 21 13:59:03 worker0 charon: 05[NET] received packet: from 14.XXX.XXX.94[4500] to 16.XX.XXX.17[4500] (80 bytes)
輸出
ipsec status
:Security Associations (1 up, 0 connecting): s-to-s[1]: ESTABLISHED 5 minutes ago, 16.XX.XXX.17[16.XX.XXX.17]...14.XXX.XXX.94[14.XXX.XXX.94] s-to-s{1}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: c97fea32_i f60175ca_o s-to-s{1}: 10.132.86.142/32 === 10.128.28.96/27
這
ufw status
Status: active To Action From -- ------ ---- 666 LIMIT Anywhere # For ssh 62626 ALLOW Anywhere # For wireguard Anywhere on pv0 ALLOW Anywhere 666 (v6) LIMIT Anywhere (v6) # For ssh 62626 (v6) ALLOW Anywhere (v6) # For wireguard Anywhere (v6) on pv0 ALLOW Anywhere (v6)
/var/log/syslog
如果我不打開該埠,伺服器如何能夠在 4500 埠(根據 ipsec 登錄)上接收數據包?我在這裡想念什麼?我根本沒有直接接觸過 IP 表。我已經通過在 8000 埠(使用
python3 -m http.server
)上執行一個簡單的 http 伺服器來驗證我無法從伺服器外部訪問其他未打開的埠)
根據日誌,主機充當客戶端,而不是伺服器。也就是說,它正在發起 IKE_SA 並發送第一條消息。預設情況下,出站連接通常不會被阻止。使用 .檢查主機上的預設策略
ufw status verbose
。
ufw``INPUT
不是系統中存在的唯一防火牆模組,它僅在全域iptables/nftables 鏈中控制自己的鏈。您可以通過在伺服器 A 上執行來驗證是否安裝了所需的規則iptables -S
,您應該看到有一些ACCEPT
UDP:4500 的規則可以從INPUT
.或者,有多個路由/過濾表,並且
ufw
在“通用”表(IIRC 索引 254)上執行時,VPN 系統通常分配一個具有較小編號的表(200 似乎是一種常見的選擇)並設置流量這受 VPN 控制的影響,由該表路由/過濾。通過執行驗證nft list tables
,然後您可以通過執行檢查表nft list ruleset table (table)
。請檢查您的手冊頁以獲取確切的語法。