由于需要远程接入客户的网络进行维护,但客户的出口设备没有sslvpn授权,无法通过sslvpn接入至客户网络。除了sslvpn外,还有其它方式可以接入客户网络进行维护:
向日葵、teamviewer这种远程桌面方式就不说了
最开始想到的方式是在出口网关做端口映射,将需要维护的资源映射出来。
优点就是方便,在任何可以上网的地方都可以访问,不需要任何的拨号客户端。
缺点就是不安全,公网任何无关人员都可以访问;如果维护设备的数量特别多时,需要映射大量的端口,增加出口设备配置量、出口设备维护难度增加。
对于注重安全角度来说,端口映射方式确实不适合。
远程维护要整个网段打通的除了sslvpn 当然就是site to site IPSec VPN了。由于平时都是在公司维护比较多,所以就直接在公司出口设备和客户设备对接做了site to site 的IPSec VPN了。
这时需要说一点的是,由于都是我自己一个人做维护,但site to site 的IPSec VPN是打通的整个网段。若只需要我自己的电脑能访问对端网段,可以通过以下几个方式做限制:
1、安全策略限制 指定IP才可访问对端网段,这是最简单和最容易想的到。
2、做策略路由,只有指定IP访问对端网段的流量才引入至VPN 隧道
3、做site to site IPSec VPN时 proxy ID指定的本端网段是这边内网不存在的IP(例如172.20.10.4/32),将需要访问对端的IP做源NAT,目的地为VPN对端网段,将流量源地址转换成172.20.10.4
这样就基本满足要求了。
但后来发现一个问题,如果在公司正常使用当然是没有问题的,一旦外出时就无法使用公司的site to site IPSec VPN 了。如果要沿用IPSec VPN的话这个问题好解决,macbook上装个虚拟机做IPSec VPN就可以了。刚开始用的是Juniper Vsrx,但后面觉得VSRX启动时间太慢了,改成mikrotik 的RouterOS。
RouterOS上主要用到两张网卡,网卡1做WAN口,配置为桥接模式并且自动检测。这样不论我的macbook到不同的网段获取到不同的IPRouterOS都可以自动识别到并获取到IP上网。网卡2作为RouterOS的LAN口,做专有模式,仅供macbook和RouterOS通讯。具体通讯方式如下图。
RouterOS VM网卡1 配置
RouterOS VM网卡2配置
Macbook 桥接接口的IP为默认,安装完vmware后自动生成的
以下为RouterOS的配置
WAN口DHCP及LAN口IP地址
其它的就是IPSec VPN的配置了
需要注意一点的是由于RouterOS内网网段固定为192.168.210.0/24网段,如果和IPSec VPN对端网段存在冲突时,proxy ID可配置为其它不冲突的网段,在NAT处配置snat,将源为192.168.210.0/24 目的地址为VPN对端网网段的数据包转换为不冲突的网段即可
如:
此时192.168.210.0/24和对端网段是能正常通讯的,但在macbook上却无法ping通、telnet 、ssh或通过web访问。主要原因是macbook的路由表中没有前往对端网段的路由,数据包直接从无线网卡获取到的默认网关直接出去了。
macbook可以在终端里输入netstat -rn 查看当前的路由表
要想正常访问对端网段,需要通过route add 命令添加路由,比如对端网段是192.168.3.0/24
则命令为 sudo route add 192.168.3.0/24 192.168.210.124
如果要删除路由则通过命令 sudo route delete 192.168.3.0/24
至此,已可以通过RouterOS的VM正常访问对端网络了。
------------------------------------------
RouterOS VM使用了很长一段时间,每次启动时间都觉得有点长。于是找到strongswan代为替代
macbook 安装strongswan只需要在终端界面执行命令即可:
brew install strongswan
strongswan 需要配置两个文件
ipsec.secrets 文件,文件在/usr/local/etc/ 目录下,用于存放vpn的共享密钥
ipsec.conf 文件,文件在/usr/local/etc/ 目录下,用于存放vpn的配置信息
假设VPN对端的公网IP为1.1.1.1 预共享密钥为123456,则ipsec.secrets文件的内容为:
1.1.1.1 : PSK 123456
ipsec.conf文件的配置内容:
# ipsec.conf - strongSwan IPsec configuration file # basic configuration config setup # strictcrlpolicy=yes # uniqueids = no conn %default authby=psk type=tunnel conn sangfor ikelifetime=60m keylife=480m rekeymargin=3m keyingtries=0 keyexchange=ikev1 #ike版本 authby=secret left=%defaultroute leftid=ljc leftsubnet=172.20.10.2/32 right=1.1.1.1 rightid=1.1.1.1 rightsubnet=10.10.10.0/24 auto=add #ignore/add/route/start type=tunnel ike=aes256-sha256-modp1024 esp=aes256-sha256-modp1024 aggressive=yes
我配置的是VPN隧道需要手动启动或禁用,需要需要自动连接的话需要将auto=add 改为auto=start
配置完成后,通过命令启动strongswan
sudo ipsec start
启用vpn隧道
sudo ipsec up sangfor
其中sangfor为配置文件中的隧道名称,可以根据实际修改
查看strongswan状态 :sudo ipsec status
若macbook 无线网卡获取到的网段为192.168.0.0/24 ,同时VPN配置的本端网段是192.168.0.0/24的话,strongswan VPN建立后就能正常访问对端网段了。
这里就有一个问题,macbook无线获取到的网段是不固定的,若每次无线网段变更后,需要修改strongswan和VPN对端的配置,这样就十分麻烦。
这时可以在macbook上做nat转换,假如对端网段是10.10.10.0/24,任何前往此网段的数据都转换为172.20.10.2/32这个IP,这样不论无线网段怎样改变,strongswan和vpn对端的配置信息都不需要更改
具体做法是执行以下命令:
echo "nat on en0 inet from any to 10.10.10.0/24 -> 172.20.10.2" | sudo pfctl -v -ef -
命令执行后所有前往10.10.10.0/24的数据包都snat转换为 172.20.10.2
strongswan其它命令:
禁用vpn隧道命令:sudo ipsec down sangfor
若修改过ipsec.conf文件需通过命令 sudo ipsec reload 重新加载配置文件
重启strongswan :sudo ipsec restart