
1 前言
一个问题,一篇文章,一出故事。
当我们完成OpenVPN的点对点连接,点对点连接的详细配置如下,
我们假设上面的节点IP地址是“192.168.0.1/24”,我们想实现其他OpenVPN客户端通过此服务器访问内网的其他服务器,如“192.168.0.10”,则本章节配置对你有帮助。
该服务器如果执行如下命令,
ip a
可见如下显示,
#... 3: enp4s0f1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:07:e9:b5:f2:5b brd ff:ff:ff:ff:ff:ff inet 192.168.0.1/24 brd 192.168.0.255 scope global noprefixroute enp4s0f1 valid_lft forever preferred_lft forever inet6 fe80::207:e9ff:feb5:f25b/64 scope link valid_lft forever preferred_lft forever #...
2 最佳实践
2.1 本章实验基于如下OpenVPN服务器端
你需要注意的是,本章某些配置文件与默认的OpenVPN服务器配置文件路径有差异,因此请不要照搬。
2.2 允许OpenVPN服务端与客户端网卡IP地址通讯
In OpenVPN Server
2.2.1 使用CCD配置文件声明客户端的网段
vim /etc/openvpn/server/ccd/will-dg
创建如下配置,
ifconfig-push 10.8.0.101 10.8.0.102 # 分配固定VPN IP iroute 192.168.0.0 255.255.255.0 # 声明该客户端的本地网络
需要注意的是,
– 配置文件名称“will-dg”必须与分配的证书名称相同
– 为“192.168.0.0/24”段生命固定的OpenVPN点对点连接地址(声明客户端能访问的本地网络“192.168.0.0/24”)
2.2.2 服务端主配置添加路由转发
vim /etc/openvpn/server/udp.conf
创建如下配置,
route 192.168.0.0 255.255.255.0 # 添加服务器路由表 client-config-dir /etc/openvpn/server/ccd
需要注意的是,
– iroute只是声明客户端能访问的本地网络,route才是真正让服务器转发流量的指令。
– 如果多个客户端有相同的iroute,需确保它们的本地网络不冲突(如改用不同子网)。
2.2.3 重启服务使用配置生效
systemctl restart openvpn-server@udp.service
以上重启OpenVPN服务器端,同时客户端也需要重启,
systemctl restart openvpn
2.2.4 OpenVPN服务器端的ping测试
ping 192.168.0.1
注:如果能ping通,则OpenVPN服务器端与客户端内网卡通讯正常。
2.3 允许OpenVPN服务端与客户内网IP地址通讯
In OpenVPN Client
2.3.1 启用内核IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.d/99-sysctl.conf sysctl -p
2.3.2 安装iptables
apt remove -y firewalld apt remove -y ufw apt install -y iptables-persistent
2.3.3 修改防火墙规则
vim /etc/iptables/rules.v4
加入如下配置,
# sample configuration for iptables service # sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to this default configuration *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -i tun0 -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -o lo -j ACCEPT -A FORWARD -o tun0 -j ACCEPT -A FORWARD -o enp4s0f1 -j ACCEPT COMMIT
规制解析,
– 条目“-A FORWARD -o xxx -j ACCEPT”允许对应的接口转发。
2.3.4 启动iptables并设置自启动
systemctl start iptables systemctl enable iptables systemctl status iptables
2.3.5 OpenVPN服务器端的ping测试
ping 192.168.0.10
注:如果能ping通,则OpenVPN服务器端与客户端内网IP地址通讯正常。
2.4 允许其他客户端与客户内网IP地址通讯
In OpenVPN Server
2.4.1 推送路由到其他客户端(可选)
vim /etc/openvpn/server/public.conf
加入如下配置,
push "route 192.168.0.0 255.255.255.0"
需要注意的是,
– 效果是所有客户端连接后会自动添加该路由。
– 可选如果不配置,则你需要在其他客户端手动设置路由
2.4.2 其他客户端的ping测试
ping 192.168.0.10
没有评论