我在使用 VPN 服务器限制“客户端”时遇到了问题。我阅读了有关使用 iptables 并禁用客户端到客户端选项的常见问题解答,但我无法运行它。
问题是如何正确地允许选定的客户端与其他网络进行通信。
这是我的 openvpn.conf 配置
port 1194
proto udp
dev tun
ca ./keys/ca.crt
cert ./keys/hub.crt
key ./keys/hub.key # This file should be kept secret
dh ./keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
### ADD ROUTES FOR OTHER IP
route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0
route 10.8.3.0 255.255.255.0
route 10.9.1.0 255.255.255.0
push "route 10.8.1.0 255.255.255.0"
push "route 10.8.2.0 255.255.255.0"
push "route 10.8.3.0 255.255.255.0"
push "route 10.9.1.0 255.255.255.0"
# IF YOU WANT TO DISABLE OPTION TO CONNECT CLIENT TO CLIENT JUST PUT A HASH
# client-to-client
# CLIENT USING THEIR OWN CONFIG DIRECTORY
client-config-dir ccd
keepalive 10 120
comp-lzo
max-clients 200
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
log-append openvpn.log
verb 3
mute 20
management localhost 7505
在 ccd 上
客户A有一条线
ifconfig-push 10.8.1.9 10.8.1.10
客户B有一条线
ifconfig-push 10.8.2.1 10.8.2.2
管理员从服务器范围 10.8.0.0 获取 IP
ETC。
认为 我创建了防火墙来选择哪些客户端能够相互通信
### firewall.sh
# Enabled Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# this will clear all rules from FORWARD
iptables -F FORWARD
# set default policy to drop all packets.
# After executing this command, the clients
# shouldn't be able to reach each other anymore
iptables -P FORWARD DROP
# allow all active connections to pass
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# Sysadmin rule - Administrator getting full acess
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 10.8.1.0/24 -j ACCEPT
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 10.8.2.0/24 -j ACCEPT
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 10.8.3.0/24 -j ACCEPT
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 10.9.1.0/24 -j ACCEPT
# Clients rules
iptables -A FORWARD -i tun0 -s 10.8.1.0/24 -d 10.9.1.0/24 -j ACCEPT
# Clients rules
iptables -A FORWARD -i tun0 -s 10.8.2.0/24 -d 10.8.3.0/24 -j ACCEPT
# Specific clients access
iptables -A FORWARD -i tun0 -s 10.8.3.5 -d 10.8.2.1 -j ACCEPT
不幸的是这个规则不起作用。
所以最后一个问题是我做错了什么?
答案1
您无法使用该ccd
功能进行此网络设置,因为您的 OpenVPN 服务器需要在您想要使用的每个子网中都有一个地址。
您应该运行多个 OpenVPN 副本,每个使用的 /24 子网一个。这样,每个 OpenVPN 服务器实例在子网中都有一个唯一的 IP 地址。
因此,例如对于子网 10.8.0.0/24,您将在配置中具有以下内容:
server 10.8.0.0 255.255.255.0
对于子网 10.8.1.0/24,您将拥有:
server 10.8.1.0 255.255.255.0
此后,您可以在这些子网之间设置防火墙规则。