
我正在嘗試在運行 Fedora Server 35 的 VPS 上設定 OpenVPN 伺服器。
這是我第一次管理防火牆,而且我也不是 Linux 本地人,但我正在努力學習。我遵循了 CentOS 實例的指南,但由於 CentOS 已不再存在,所以我選擇了 Contabo 中的 Fedora 映像。
該指南依賴於firewalld
,並且由於它已經安裝並在我的 VPS 上進行了部分設置,因此我也做了同樣的事情。我知道這firewalld
就是問題所在,因為當我關閉它時,VPN 用戶端可以正常連線。
配置了 2 個活動區域,FedoraServer
並且trusted
。該FedoraServer
區域預先配置了 VPS 映像,並且被設定為預設區域。我按照指南使用以下命令來更改配置:
firewall-cmd --zone=trusted --add-service openvpn
firewall-cmd --zone=trusted --add-service openvpn --permanent
firewall-cmd --add-masquerade
firewall-cmd --add-masquerade --permanent
VAR=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
firewall-cmd --reload
目前區域資訊如下:
[~]# firewall-cmd --info-zone=FedoraServer
FedoraServer (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[~]# firewall-cmd --info-zone=trusted
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: tun0
sources:
services: openvpn
ports:
protocols:
forward: yes
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
有趣的是,當我設定trusted
為預設區域時,我能夠連接到正在firewalld
運行的 VPN、NAT 工作並可以存取網路。
現在,你可以說問題解決了。但由於我缺乏知識,我擔心我可能會在安全方面留下漏洞,因為該trusted
區域使用target: ACCEPT
.
我在 StackExchange、Fedora 論壇和 OpenVPN 論壇上閱讀了無數的帖子以及firewalld
文檔,但沒有任何結果。我覺得我缺少底層的網路知識來解決這個問題,而且我不知道該搜尋什麼。
任何幫助、提示或指導將不勝感激!
答案1
您可以將服務新增至受信任區域,然後將接受度變更為丟棄例如僅允許 openvpn 和 ssh,您可以這樣
sudo firewall-cmd --zone=trusted --add-service={ssh,openvpn}
sudo firewall-cmd --zone=trusted --set-target=DROP
sudo firewall-cmd --reload
答案2
看來您走在正確的道路上,並且在 Fedora 35 上配置 OpenVPN 伺服器方面取得了良好的進展。
讓我們解決您的疑慮並提供一些指導:
預設區域:
出於不同的目的設置不同的區域是很常見的。如果將受信任的區域設為預設區域可以讓您的 VPN 正常運作,那就沒問題。但是,您正確地指出了對目標的擔憂:接受。在更安全的配置中,您希望僅限制對必要服務的存取。
Fedora 伺服器專區:
如果您想使用 FedoraServer 區域作為預設區域,則需要確保它允許 OpenVPN 所需的流量。您已經提到,當將受信任設為預設值時,OpenVPN 才能運作,因此比較兩個區域之間的設定可能會有所幫助。調整FedoraServer區域:
如果您決定使用 FedoraServer 區域作為預設區域,則需要新增規則以允許 OpenVPN 流量。例如:
防火牆cmd --zone=FedoraServer --add-service=openvpn --permanent 防火牆-cmd --reload