解决openVPN连接时数据被拦截
·
准备阶段:
本次使用的服务器都是centos7
1.服务器A 公网IP:1.1.1.1/24 私网IP:10.0.0.1/24
2.服务器B 公网IP:100.100.0.1/24 私网IP:10.0.0.2/24
3.服务器A和服务器B的私网互通
4.openVPN客户端 拨号地址:10.8.0.6
一、搭建客户端服务端
当服务器B和openVPN客户端之间的数据在公网传输时被拦截,在服务器A上配置openVPN服务(服务器A和客户端之间没有被拦截)。
openVPN客户端尝试连接,得到拨号地址10.8.0.6。如果显示连接失败或者openVPN服务端起不来就是配置文件的问题,哪边报错就是哪边的问题。
二、配置服务器A
1.开启流量转发
grep 'net.ipv4.ip_forward = 1' /etc/sysctl.conf || echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE #将10.8.0.0/24网段上的数据全走eth1网口
2.添加路由表
vim /etc/iproute2/rt_tables
添加一个 200 vpn
3.配置路由表规则
ip route add 10.8.0.0/24 dev tun0 src 10.8.0.1 table vpn #添加一个路由规则到vpn表中,这条规则是vpn这个表中数据包默认使用源 IP 10.8.0.1 通过tun0 走网关10.8.0.0/24
ip route add 10.0.0.0/24 dev eth1 src 10.0.0.1 table vpn
ip route add default via 10.0.0.2 dev eth1 table vpn ## 让eth1上的数据下一跳到达10.0.0.2
4.让所需网段使用该规则
ip rule add from 10.8.0.0/24 table vpn #让10.8.0.0/24网段的所有IP 使用vpn表规则
注:上述配置路由表规则均非永久配置
5.永久配置(可替换3和4):
vim /etc/rc.d/rc.local
在该文件末尾加上
ip rule add from 10.8.0.0/24 table vpn
ip route add 10.0.0.0/24 dev eth1 src 10.0.0.1 table vpn
ip route add default via 10.0.0.2 dev eth1 table vpn
添加完之后并给上执行权限
chmod +x /etc/rc.d/rc.local
三、配置服务器B
1.开启流量转发
grep 'net.ipv4.ip_forward = 1' /etc/sysctl.conf || echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
本文到此,已经解决了最开始提出的问题,也可以通过公网访问私网服务器了。
扩展:
如果服务器A在国内,服务器B在国外,在服务器上配置将服务器A转发来的流量转发出去,是否可以实现科学上网?
这是本人正在使用的一种方案,转载请标明出处。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)