我已經設定了一個 OpenVPN 伺服器並且到目前為止它正在運行。我的網路中有以下子網路 、10.200.1.0/24
、10.200.2.0/24
和10.200.3.0/24
。當我連接到 VPN 時,我可以 ping 通所有 3 個子網,沒有問題。如何限制伺服器端的子網路存取?我不需要ccd
配置,因為適用於所有客戶端。我只想限制對子網路10.200.1/24
和10.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
答案1
您的 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 插件來完成,但實現起來要困難得多。