Openvpn

OpenVPN 社區限制子網訪問

  • January 5, 2021

我已經設置了一個 OpenVPN 伺服器,它目前正在執行。我的網路中有以下子網10.200.1.0/2410.200.2.0/24、 和10.200.3.0/24。當我連接到我的 VPN 時,我可以 ping 所有 3 個子網,沒問題。如何限制伺服器端的子網訪問?我不需要ccd配置,因為它適用於所有客戶端。我只想限制對子網10.200.1/2410.200.2/24全域的訪問(如果已連接)。

下面的配置適用於客戶端在連接時無法訪問10.200.3/24的情況,因為伺服器沒有將路由推送到客戶端。但是當客戶手動將路由添加到他們的機器時,他們可以在技術上連接到它。

如何從伺服器端強制允許訪問哪個子網?

伺服器配置文件

local 10.200.0.8
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.200.1.0 255.255.255.0"
push "route 10.200.2.0 255.255.255.0"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
explicit-exit-notify

您的 VPN 伺服器是一個 IP 路由器(進行數據包轉發),其中可能會過濾數據包(轉發或不轉發)。這是通過防火牆完成的。例如,如果伺服器是 Linux,則添加:

iptables -I FORWARD 1 -s 10.8.0.0/24 -d 10.200.3.0/24 -j REJECT

-I ... 1在鏈中的任何其他內容之前安裝規則,我這樣製作它以確保它可以按原樣正常工作,無論防火牆中已經存在什麼。這可能不是最優的。請根據需要調整規則。只要確保它出現在任何匹配來自 VPN 客戶端的數據包的允許規則之前。

這種過濾也可以通過 OpenVPN 外掛來完成,但實現起來要困難得多。

引用自:https://serverfault.com/questions/1048687