close

AWS side to side VPN建置實作

  在完成Public SubnetPrivate Subnet後,開始規劃IPSec VPN與公司內部資源建立安全性連線,基本上有兩種方式:

  1. Hardware VPN-使用VPC提供之Hardware VPN服務與客戶端之Hardware VPN Device(CiscoJuniper Router)建立連線,但除了廠牌限制外、韌體上也有限制,設定參數太過複雜,以至於難度較高,最重要的是需要額外收費。
  2. Software VPN-使用VPN軟體建立Side to Side VPN,除了設定上較容易外,也沒額外費用產生,此篇採用openswan來實作,架構圖如下所示。
  • AWS與公司環境基本上都是採WAN Router 直接NAT外部IP對應到內部,所以兩邊伺服器的網路介面都只需要一個,如果您是採用一張網卡接外部IP,一張網卡接內部IP,此篇的設定方式則需要做一些調整(不另外說明)
  • 另外因安全性問題,EIP部分已遮蓋。

 

AWS Side VPN SERvER建置

  1. 請先於Public subnet建立一台redhat 7Instance,並將Security GroupInbound加入下圖規則,除了IPSec所需5004500 port外,並允許雙方LAN網段所有流量通過。
  2. SSHAWS SIDE VPN SERVER,使用ec2-user登入後,請修改root密碼並切換至root

  1. 關閉SELINUX並安裝openswan且設為開機自動啟動

# yum install wget bind-utils openswan lsof

# chkconfig ipsec on

  1. 關閉RHEL 7 Firewalld並安裝使用iptables(RHEL 7使用Firewalld取代iptables,但因習慣問題這邊還是使用iptables)
  2. 關閉並停止firewalld

# systemctl mask firewalld

# systemctl stop firewalld

  • 安裝 iptables

# yum install iptables-services

  • 啟動及設定開機執行 iptables

# systemctl enable iptables

# systemctl start iptables

  1. 編輯sysctl.conf,加入以下參數。

net.ipv4.ip_forward = 1

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.all.send_redirects = 0

  1. 編輯iptables,加入以下NAT規則。

 

  1. 建立IPSec設定檔與sharekey

 

  • 建立sharekey

  • 輸入兩邊的Public IP PSK codePSK code請隨意輸入超過20 byte之字元即可,兩邊需相同。

EIP1 EIP2: PSK "1qaz2wsx3edc4rfv5tgb6yhn"

  1. 修改ipsec.conf,並確認為以下參數內容。

 

  1. 到目前為止,AWS Side VPN設定已完成。

Local Side VPN server建置

  1. 請於公司內部網段建立一台Cent OS Server並關閉SELINUX,之後安裝openswan且設為開機自動啟動

# yum install wget bind-utils openswan lsof

# chkconfig ipsec on

  1. 編輯sysctl.conf,加入以下參數。

net.ipv4.ip_forward = 1

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.all.send_redirects = 0

  1. 編輯iptables,加入以下NAT規則。

  1. 建立IPSec設定檔與sharekey

  • 建立conf,參數如下:

 

  • 建立sharekey

  • Public IP PSK codePSK code請隨意輸入超過20 byte之字元即可,兩邊需相同。

EIP2 EIP1: PSK "1qaz2wsx3edc4rfv5tgb6yhn"

  1. 修改ipsec.conf,並確認為以下參數內容。

 

  1. 到目前為止,LOCAL Side VPN設定已完成。

測試連線

  1. 請兩邊將ipsec服務重新啟動

service ipsec restart

  • Local side確認tunnel是否有起來

service ipsec status

  1. 兩邊互ping測試。

-AWS side VPN Server ping local VPN Server LanIP(172.30.8.6)成功

 

-Local side VPN Server ping AWS VPN Server public subnetIP(10.0.0.4)成功

 

-Local side VPN Server ping AWS VPN Server private subnetIP(10.0.1.199)成功

 

-AWS private subnet DB server ping local side lanIP(172.30.8.199172.30.8.6)成功

  • 如果這邊不成功,除了確認該security group已加入允許兩邊LAN端通過的規則外,再請確認private subnetroute table有將default gatway指到AWS Side VPN instance上,否則LAN端還是不會通。

  1. 此建置對於網路1~3層的知識與iptables的運作方式之理解需求很高,務必先有一定的了解後對於之後的debug才會比較順利。
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 MXLI 的頭像
    MXLI

    mxli的部落格

    MXLI 發表在 痞客邦 留言(0) 人氣()