前言
簡單說一下就是,我想讓我所在的網路可以訪問到 AWS subnet 的固定子網 IP,
內網的工作同仁或者內部 Server 不用額外做 vpn 撥號或其他動作。
其實 AWS 上面也有現成的服務可以租用(在 VPC 的設定中)
一個月大概在台幣 1,000 左右 AWS VPN pricing。
但基於我想自己架看看,另外也可以省點錢,就租了一台 EC2 來土炮了。
目標就是使用 Vigor 2925 播出到 IPsec server 保持一個 Lan to Lan 的連線。
公司端:
- 設備:Vigor 2925
- 網段:192.168.0.0/24
AWS 端:
- 網段:172.21.0.0/16
- IPsec Server : CentOS7, EIP
libreSwan 簡介
libreSwan 是 IPsec 協議的開源實現,基於FreeSwan 專案。
在 Centos7 版本後, 提供ipsec 服務包由libreswan替代了openswan
安裝 libreswan
$ yum install epel-release
$ yum install libreswan
設定 ipsec
ipsec 啟動時會載入 /etc/ipsec.conf
$ vi /etc/ipsec.d/ipsec.conf
conn IPsec
authby=secret
pfs=no
auto=add
keyingtries=3
dpddelay=30
dpdtimeout=120
dpdaction=clear
rekey=no
ikelifetime=8h
keylife=1h
type=tunnel
left=172.21.2.10
leftsubnet=172.21.0.0/16
rightsubnet=vhost:%priv
right=%any
預先共享秘鑰啟動時會載入 /etc/ipsec.secrets
$ vi /etc/ipsec.d/ipsec.secrets
172.21.2.10 %any: PSK “pskyouwant"
修改內核參數
vi /etc/sysctl.conf
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.conf.lo.arp_announce=2
net.ipv4.ip_forward = 1
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_source_route = 0
額外新增一條,來符合 Aws 網卡名稱
net.ipv4.conf.ens5.rp_filter=0
使配置生效
$ sysctl -p
檢查ipsec設定
$ ipsec setup start
$ ipsec verify
如果有紅色錯誤修正一下再執行至正確狀態
開啟防火牆
可以針對欲連線的外部 IP 做白名單開放即可
- udp : 500
- udp : 4500
啟動ipsec
$ systemctl start ipsec
$ systemctl enable ipsec
postrouting
做完上面的步驟,應該就可以使用 IPsec 連線了,
但如果想要訪問 IPsec 那邊的 subnet,必須在 nat 上做封包處理。
aws ec2 上的網卡是 ens5 就 -o ens5
$ iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens5 -j MASQUERADE
為了避免重新開機後規則遺失,裝上 iptables-services 來管理 iptables 規則。
$ yum install iptables-services
儲存目前規則
$ iptables-save > /etc/sysconfig/iptables
啟動服務
$ systemctl start iptables
$ systemctl enable iptables
Vigor 2925 設定
如下圖:
- 撥出並且永遠連線
- 撥出選 ipsec 通道,並填入 ipsec server 的 ip 位置
- 預先共用金鑰填入上方設定好的金鑰
- TCP/IP 就照你的網段進行設定吧