Posted in: Aws云上云维
AWS中国区 Site to Site VPN配置教程
基础设施:
- AWS中国区VPC,至少一个Public的Subnet;
- 公司有固定IP,我们是中国联通的企业光纤;
- 有一台支持ipsec的路由器,或者是一台闲置的PC安装Centos7(一个网卡就可以)。这里我们采用的是后者。
模拟环境说明:
- AWS的VPC为:172.31.0.0/16;
- 公司内部网络为:10.0.1.0/24;
- 公司的公网IP为:145.111.111.111;
- 后面说到的EC2的固定公网IP为:54.10.10.10,内网IP为:172.31.0.114;
- 公司内部用于VPN的Centos的内网IP为:10.0.1.200。
前期步骤:
- 在AWS的Public子网中启动一台EC2作为VPN用机。t2.micro的就可以;
- 启动后分配一个固定的公网IP给这台EC2;
- 右键点击这个EC2,“联网”->“更改源/目标。检查”,禁用;
- 前往AWS的VPC控制面板,配置希望连接到您公司内部资源的子网对应的路由表,添加路由:10.0.1.0/24到上面提到的EC2。
AWS EC2配置:
sudo su -
yum upgrade
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 2048
net.ipv4.neigh.default.gc_thresh3 = 4096
sysctl -p
yum -y install openswan
vi /etc/ipsec.conf
version 2.0
config setup
nat_traversal=yes
protostack=netkey
oe=off
conn vpn
type=tunnel
authby=secret
left=172.31.0.114
leftid=54.10.10.10
leftsubnet=172.31.0.0/16
right=145.111.111.111
rightsubnet=10.0.1.0/24
rightid=145.111.111.111
auto=start
ike=aes128-sha1;modp1024
ikelifetime=28800s
phase2=esp
Phase2alg=aes128-sha1;modp1024
salifetime=3600s
pfs=yes
dpdaction=restart_by_peer
dpddelay=10
dpdtimeout=30
keyingtries=%forever
vi /etc/ipsec.d/vpn.secrets
145.111.111.111 54.10.10.10: PSK "keykeykey"
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE
service ipsec restart
内部Centos配置:
sudo su -
yum upgrade
vi /etc/sysconfig/selinux
SELINUX=disabled
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
reboot
yum -y install openswan bind-utils lsof
vi /etc/ipsec.conf
version 2.0
config setup
nat_traversal=yes
protostack=netkey
oe=off
conn vpn
type=tunnel
authby=secret
left=10.0.1.200
leftid=145.111.111.111
leftsubnet=10.0.1.0/24
leftnexthop=%defaultroute
right=54.10.10.10
rightsubnet=172.31.0.0/16
rightid=54.10.10.10
auto=start
ike=aes128-sha1;modp1024
ikelifetime=28800s
phase2=esp
Phase2alg=aes128-sha1;modp1024
salifetime=3600s
pfs=yes
dpdaction=restart_by_peer
dpddelay=10
dpdtimeout=30
keyingtries=%forever
vi /etc/ipsec.d/vpn.secrets
54.10.10.10 145.111.111.111: PSK "keykeykey"
iptables -t nat -A POSTROUTING -s 172.31.0.0/16 -o enp4s0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.31.0.0/16 -o enp4s0 -j MASQUERADE
service ipsec restart
调试:
- tail -n 500 -f /var/log/secure | grep pluto 可以通过命令查看日志;
- 如果遇到问题可以尝试service ipsec stop两边的服务,之后一次重新打开;
- ipsec verify 可以查看设置是否正确;
- service ipsec status 可以查看服务状态;
- ipsec whack –status | grep -i established 可以查看是否有建立连接;
使用:
- 按照以上设置成功后应该已经建立了Site to Site VPN了。AWS那边由于直接设置了路由表,所以所有EC2应该都可以ping通所有10.0.1.0/24的IP了;
- 公司内部这边需要在路由器里或者自己的开发机上增加静态路由,路由172.31.0.0/16到10.0.1.200。这样就可以从公司内部的电脑ping通所有172.31.0.0/16的IP了。