导语:在本文中,我们将为读者详细介绍如何利用Raspberry PI搭建用户网关,以实现家庭网络和远程AWS VPC子网之间的安全桥接。
在上一篇文章中,我们为读者展示了如何使用OpenVPN等VPN软件为AWS私有资源创建安全隧道。而在本文中,我们将为读者详细介绍如何利用Raspberry PI搭建用户网关,以实现家庭网络和远程AWS VPC子网之间的安全桥接。
首先,我们首先要知道家庭路由器的公有IP地址:
接下来,登录AWS管理控制台,导航至VPC仪表板,并创建一个新的VPN用户网关:
然后,创建一个虚拟专用网关:
并将其附加到目标VPC:
随后,使用用户网关和虚拟专用网关创建VPN连接:
注:务必将Home CIDR子网添加到静态IP前缀部分。
创建好VPN连接后,点击“Tunnel Details”选项卡,就会看到两条备用的隧道:
创建VPN连接可能需要几分钟的时间。准备就绪后,选择连接,然后选择“Download Configuration”,打开配置文件,记下预共享密码和隧道IP:
tunnel-group 52.47.119.151 type ipsec-l2l tunnel-group 52.47.119.151 ipsec-attributes pre-shared-key irCAIDE1NFxyOiE4w49ijHfPMjTW9rL6
我使用的是Raspbian系统的Raspberry PI 3(Quand Core CPU 1.2 GHz,1 GB RAM),启用了SSH服务器(默认用户名和密码:pi/raspberry),可以通过下列命令来登录并操作这个系统:
需要注意的是,必须安装IPsec内核支持。因此,必须在PI上安装openswan,具体命令如下所示:
sudo apt-get install -y openswan lsof
然后,更新/etc/ipsec.conf文件,具体命令如下所示:
version 2.0 # conforms to second version of ipsec.conf specification # basic configuration config setup # Enable core dumps (might require system changes, like ulimit -C) dumpdir=/var/run/pluto/ # NAT-TRAVERSAL support, see README.NAT-Traversal nat_traversal=yes virtual_private= # OE is now off by default. Uncomment and change to on, to enable. oe=off # which IPsec stack to use. auto will try netkey, then klips then mast protostack=netkey include /etc/ipsec.d/*.conf
然后,在/etc/ipsec.d/home-to-aws.conf中创建一个新的IPsec连接,具体命令如下所示:
conn home-to-aws type=tunnel authby=secret #left=%defaultroute left=192.168.1.81 leftid=89.95.X.Y leftnexthop=%defaultroute leftsubnet=192.168.0.0/16 right=52.47.119.151 rightsubnet=10.0.0.0/16 pfs=yes auto=start
·left:Raspberry PI私有IP。
·leftid:家庭路由器的公有IP。
·leftsubnet:家庭子网的CIDR。
·right:虚拟专用网关隧道IP。
·rightsubnet:VPC的CIDR。
将隧道预共享密码添加到/var/lib/openswan/ipsec.secrets.inc文件中:
89.95.X.Y 52.47.119.151 : PSK“irCAIDE1NFxyOiE4w49ijHfPMjTW9rL6”
为了启用IPv4转发功能,请编辑/etc/sysctl.conf,并确保删除以下各行前面的注释符号:
net.ipv4.ip_forward=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0
运行sysctl -p以重新加载。然后,重新启动IPsec服务:
service ipsec restart
验证服务是否能够正常运行:
如果返回到AWS Dashboard,则应该看到第1个隧道状态已改为UP:
添加一个新的路由条目,通过VPN网关将流量转发到家庭子网:
注意:请按照上述相同步骤设置第2条隧道,以实现VPN连接的弹性和高可用性。
在专用子网中启动一个EC2实例来验证VPN连接是否可以正常运行:
仅允许来自家庭网关CIDR的SSH:
创建实例后,使用服务器私有IP地址通过SSH进行连接:
好极了!我们现在就可以安全地连接到自己的私有EC2实例了。
要想从同一家庭网络中的其他机器建立连接的话,请添加一条静态路由,如下所述:
1 – Windows系统
route add 10.0.0.0 MASK 255.255.0.0 192.168.1.81
2 – Linux系统
sudo up route add -net 10.0.0.0 netmask 255.255.0.0 gw 192.168.31.232
3 – Mac OS X系统
sudo route -n add 10.0.0.0/16 192.168.31.232
好了,我们来测试一下: