使用了 Open VPN 多年後,最近工作的需要,必須使用到 IPSEC來建立 site to site 的VPN。做個筆記,日後可以查閱。


secure vpn

點對點兩端的作業系統,預計使用 CentOS 7

1.兩地Server 建立起IPSEC VPN 連線。
2.兩地Server 內的各自User 可以直接互相訪問,不用做NAT,可直接使用User 私有IP。

先規劃一下兩地的狀況

site to site vpn

Site A

匣道器使用 192.168.131.137 IP 上 internet
內部IP 10.10.100.1
使用者內部網段 10.10.100.0 / 24

Site B

匣道器使用 192.168.131.43 IP 上 internet
內部IP 10.10.200.1
使用者內部網段 10.10.200.0 / 24

兩端匣道器系統使用 CentOS 7,基本安裝,之後加安裝 epel-release ipsec-tools

yum install epel-release
yum install ipsec-tools

不清楚也沒研究 NetworkManager.service 跟 firewalld.service 這兩個服務, 所以我會停用。

systemctl disable NetworkManager.service
systemctl disable firewalld.service

在啟動 IPsec 連線前,核心中必須啟用 IP forwarding。
可以使用

echo “1” > /proc/sys/net/ipv4/ip_forward

也可以修改 /etc/sysctl.conf 檔案,加入 net.ipv4.ip_forward = 1 之後,執行下列指令以使變更生效:

sysctl -p /etc/sysctl.conf

設定Side A 的IPSEC1 服務器,新增一個網路設定檔 ipsec1 命名為 /etc/sysconfig/network-scripts/ifcfg-ipsec1
內容如下:

TYPE=IPSEC
ONBOOT=no
IKE_METHOD=PSK
SRCGW=10.10.100.1
DSTGW=10.10.200.1
SRCNET=10.10.100.0/24
DSTNET=10.10.200.0/24
DST=192.168.131.143

ONBOOT = yes 或 no 看實際需要
IKE_METHOD = PSK 使用預先共享金鑰的加密方法
SRCGW=10.10.100.1 來源閘道器,也就是區網 A 的閘道器 IP 位址
DSTGW=10.10.200.1 目的地的閘道器,也就是區網 B 的閘道器 IP 位址
SRCNET=10.10.100.0/24 來源網路,也就是區網 A 的網路範圍
DSTNET=10.10.200.0/24 目的地網路,也就是區網 B 的網路範圍
DST=192.168.131.143 目的地 IP 位址,也就是區網 B 可被外界存取的 IP 位址

設定預先共享金鑰 /etc/sysconfig/network-scripts/keys-ipsec1 內容格式如下:

IKE_PSK=”xY)($89koLPy”

上面這個檔兩邊SERVER 上內容必須一樣。

建立後,必須修改檔案的屬性。

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

接下來看連線加密的需求,調整設定檔 /etc/racoon/racoon.conf

path pre_shared_key “/etc/racoon/psk.txt”;
path certificate “/etc/racoon/certs”;
path script “/etc/racoon/scripts”;

sainfo anonymous
{
#pfs_group 2;
lifetime time 1 hour ;
encryption_algorithm 3des, blowfish 448, rijndael ;
authentication_algorithm hmac_md5 ;
compression_algorithm deflate ;
}

remote anonymous
{
exchange_mode main;
my_identifier address;
peers_identifier address;
lifetime time 24 hour ;
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key ;
dh_group 2 ;
}

}

include “/etc/racoon/192.168.131.143.conf”;

請注意在檔案底部的 include 那一行只與 IPsec 穿隧連線時才會出現,因為它是在 IPsec 連線每次啟動時自動產生的。

以上為Side A 伺服器上設定的方式,接下來設定 Side B

設定Side B 的IPSEC2 服務器,新增一個網路設定檔 ipsec2 命名為 /etc/sysconfig/network-scripts/ifcfg-ipsec2
內容如下:

TYPE=IPSEC
ONBOOT=no
IKE_METHOD=PSK
SRCGW=10.10.200.1
DSTGW=10.10.100.1
SRCNET=10.10.200.0/24
DSTNET=10.10.100.0/24
DST=192.168.131.137

設定預先共享金鑰 /etc/sysconfig/network-scripts/keys-ipsec2 內容格式如下:

IKE_PSK=”xY)($89koLPy”

上面這個檔兩邊SERVER 上內容必須一樣。

建立後,必須修改檔案的屬性。

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec2

按需求,調整設定檔 /etc/racoon/racoon.conf

===========以上為兩邊伺服器設定的內容============

接著說明如何啟動及關閉IPSEC 連線。

IPSEC1 上面
啟動: 使用 ifup ipsec1
關閉: 使用 ifdown ipsec1

IPSEC2 上面
啟動: 使用 ifup ipsec2
關閉: 使用 ifdown ipsec2

如要測試 IPsec 連線,請在外部可存取的裝置上(此例為 ens33)執行 tcpdump 工具程式,來檢視在主機(或網路間)傳輸的網路封包,並且檢驗它們是否已經經由 IPsec 進行 加密。 例如,如要檢查區網 A 的 IPsec 連線狀況,請輸入下列指令:

tcpdump -nn -i ens33 host 192.168.131.143

封包中應該含有一個 AH 表頭,而且必須是一個 ESP 封包。 ESP 表示該封包已經加密過了。 例如(反斜線代表指令行的繼續):

12:24:26.155529 192.168.131.137 > 192.168.131.143: AH(spi=0x021c9834,seq=0x358): \
192.168.131.143 > 192.168.131.137: ESP(spi=0x00c887ad,seq=0x358) (DF) \
(ipip-proto-4)

這個IPSEC 的連線使用到那些PORT 口跟通訊協定呢?

Protocol: UDP, port 500 (for IKE, to manage encryption keys)
Protocol: UDP, port 4500 (for IPSEC NAT-Traversal mode)
Protocol: ESP, value 50 (for IPSEC)
Protocol: AH, value 51 (for IPSEC)

所以在防火牆上必須放行這些協定及Port口

iptables -A INPUT -i $EXT_NIC -p udp –dport 500 -j ACCEPT
iptables -A INPUT -i $EXT_NIC -p udp –dport 4500 -j ACCEPT
iptables -A INPUT -i $EXT_NIC -p 50 -j ACCEPT
iptables -A INPUT -i $EXT_NIC -p 51 -j ACCEPT

$EXT_NIC表示IPSEC主機上對外上網的網卡,在這個例子中為 ens33

以上是小瑞設定IPSEC 的筆記,希望對大家有幫助。

日期:2018/05/09 | 留言:0 個 | 作者:Rico | 瀏覽:
分類:MIS易筋經,網路篇
標籤:,
  1. 目前還沒有留言!
  1. 目前沒有引用。

*

Copyright -0001 紐菲斯的部落格