这次依然使用openvpn的C/S架构,但是实现的是LAN-TO-LAN vpn,实现两边的内网互访。而不是默认的c/s架构,只能由client访问到服务器内网的资源。
环境:
OpenVPN 2.3.14 x86_64-redhat-linux-gnu
CentOS release 6.5 (Final)
环境:
OpenVPN 2.3.14 x86_64-redhat-linux-gnu
CentOS release 6.5 (Final)
0x01 点对点VPN
1.不需要开启iptables
2.添加合适的路由,可以在openvpn的配置文件下去完成
3.需要开启数据包转发功能,在/etc/sysctl.conf下去配置
4.查看路由表的方法:
route -n
netstat -nr
linux增加路由与删除路由
route add -net 172.16.11.0 netmask 255.255.255.0 dev tun0 gw 10.8.0.1
route del -net 172.16.11.0 netmask 255.255.255.0 dev tun0 gw 10.8.0.2
windows添加静态路由
route add 10.8.0.0 mask 255.255.255.0 172.16.11.196
0x02 一些调试与排错技巧
配置文件快速查看
grep "^[^#;]" server.conf
vpn调试工具
在指定接口下抓限定条件的数据包
tcpdump -i tun0 -n dst 10.8.1.11
tcpdump -i tun0 -n src 172.16.11.198
linux下的openvpn客户端
apt-get install openvpn
openvpn --config ali.ovpn
注意:openvpn --config config/ali.ovpn 这样会有问题,不能启动
只能到指定文件夹下去加载配置文件,才不会出错
查看证书的命令
openssl x509 -noout -text -in xxname.crt
根据证书的common name,里面有五个信息可以看
Issuer -- CA的信息
subject -- 项目或者用户的信息
signature Algorithm -- 签名算法
Validity -- 证书有效期
Public-Key Length -- 公钥长度
主要根据subject的common name,即CN
0x03 完成两边网络互访的关键配置项
首先我把server.conf里面的注释内容翻译了一下
# 分配指定的ip地址给指定的客户端 # 或者连接的客户端后面有私有子网也需要有VPN访问 # 使用子目录名“ccd”为指定客户端添加配置文件 # (详细内容请看man page) # 举例: (CN: Common Name) # 假设客户端证书的CN是“Thelonious” # 有一个小型子网在他连接VPN的电脑后面 # 比如 192.168.40.128/255.255.255.248. # 首先,把下面两行注释掉 ;client-config-dir ccd ;route 172.16.11.0 255.255.255.0 # 然后创建一个ccd/Thelonious的文件,写入一行: # iroute 192.168.40.128 255.255.255.248 # 这将允许Thelonious后面的私有子网去访问VPN # 这个例子将只会工作在路由模式而不是桥接模式 # [i.e.] 也就是,你使用的是 “dev tun” 与 “server” 指令 # 举例: # 假设你想给Thelonious一个固定的VPN IP地址:10.9.0.1 # 首先,把下面两行注释掉 ;client-config-dir ccd ;route 10.9.0.0 255.255.255.252 # 然后把下面内容加入 ccd/Thelonious # ifconfig-push 10.9.0.1 10.9.0.2
注意文件的命名必须严格按照证书里面CN来命名
没有评论:
发表评论