VPN Site-to-Site là dạng kết nối nhiều văn phòng trụ sở xa nhau thông qua các thiết bị chuyên dụng và một đường truyền được mã hoá ở quy mô lớn hoạt động trên nền Internet. VPN Site-to-Site là giải pháp phù hợp cho các khách hàng có nhu cầu nối các mạng với nhau để liên lạc và chia sẻ dữ liệu, đảm bảo an toàn bảo mật.
Sơ đồ:
1. DC Fortigate.
Cài đặt Hostname và mật khẩu cho thiết bị.
config sys global
set hostname DC-Fortigate
end
config system admin
edit admin
set password Hoanghd164
end
Đặt ip cho các interface đấu nối, trong đó port 1 sẽ đi internet và port 2 sẽ là mạng local.
config system interface
edit port1
set mode static
set ip 192.168.13.225 255.255.254.0
set allowaccess https http ssh ping snmp
next
edit "port2"
set ip 30.0.0.1 255.255.255.0
set allowaccess ping
set type physical
next
end
Trỏ default route ra internet
config router static
edit 1
set dst 0.0.0.0 0.0.0.0
set gateway 192.168.12.5
set device port1
end
Cài đặt DNS cho thiết bị.
config system dns
set primary 8.8.8.8
set secondary 1.1.1.1
end
Thay đổi port web management mặc định.
config system global
set admin-port 8480
set admin-sport 8443
end
Nếu dòng Fortigate của bạn có port fortilink thì bạn có thể xoá nó nếu không dùng đến và nếu thiết bị của bạn không có port fortilink thì bạn có thể bỏ qua bước này.
Hình ảnh cho thấy thiết bị của bạn có cổng fortilink
Mình có cổng fortilink nên mình sẽ thao tác các lệnh bên dưới.
config system ntp
set ntpsync disable
set server-mode disable
end
config system dhcp server
delete 1
end
config system interface
delete fortilink
end
Tạo kết nối VPN giữa 2 site.
config vpn ipsec phase1-interface
edit "VPN-DC-To-DR"
set interface "port1"
set peertype any
set net-device disable
set proposal des-sha256
set dhgrp 20
set remote-gw 192.168.13.226
set psksecret Hoanghd164
next
end
config vpn ipsec phase2-interface
edit "VPN-DC-To-DR"
set phase1name "VPN-DC-To-DR"
set proposal des-sha256
set pfs disable
set keepalive enable
set keylifeseconds 28800
next
end
Verify lại cấu hình VPN.
$ get vpn ipsec tunnel details
gateway
name: 'VPN-DC-To-DR'
type: route-based
local-gateway: 192.168.13.225:0 (static)
remote-gateway: 192.168.13.226:0 (static)
dpd-link: on
mode: ike-v1
interface: 'port1' (3)
rx packets: 4 bytes: 560 errors: 0
tx packets: 4 bytes: 336 errors: 3
dpd: on-demand/negotiated idle: 20000ms retry: 3 count: 0
selectors
name: 'VPN-DC-To-DR'
auto-negotiate: disable
mode: tunnel
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA
lifetime/rekey: 28800/28239
mtu: 1446
tx-esp-seq: 5
replay: enabled
qat: 0
inbound
spi: 39ea9384
enc: des 5c4dad8a808bae4f
auth: sha256 673644c8474eee481bb194994041f6b3c5cba8864e3bb1224d757dd366b46fc3
outbound
spi: df87df26
enc: des d9d4f7e5f8186591
auth: sha256 411fa2192f358b2e2d87fc0b36dded8b5a54d780706bd5aeca454d1215196838
Mình tạo một số Address để test.
config firewall address
edit "Subnet-10.0.101.0"
set associated-interface "port2"
set subnet 10.0.101.0 255.255.255.0
next
edit "Subnet-10.0.102.0"
set associated-interface "port2"
set subnet 10.0.102.0 255.255.255.0
next
edit "Subnet-30.0.0.0"
set associated-interface "port2"
set subnet 30.0.0.0 255.255.255.0
next
edit "Subnet-20.0.101.0"
set associated-interface "VPN-DC-To-DR"
set subnet 20.0.101.0 255.255.255.0
next
edit "Subnet-20.0.102.0"
set associated-interface "VPN-DC-To-DR"
set subnet 20.0.102.0 255.255.255.0
next
edit "Subnet-50.0.0.0"
set associated-interface "VPN-DC-To-DR"
set subnet 50.0.0.0 255.255.255.0
next
end
Verify kết quả trên web console.
Sau khi tạo kết nối xong, hãy tạo firewall policy cho kết nối này.
config firewall policy
edit 1
set name "VPN DC To DR"
set srcintf "port2"
set dstintf "VPN-DC-To-DR"
set srcaddr "Subnet-10.0.101.0" "Subnet-10.0.102.0" "Subnet-30.0.0.0"
set dstaddr "Subnet-20.0.101.0" "Subnet-20.0.102.0" "Subnet-50.0.0.0"
set action accept
set status enable
set schedule "always"
set service "ALL"
set logtraffic disable
next
edit 2
set name "VPN DR To DC"
set srcintf "VPN-DC-To-DR"
set dstintf "port2"
set srcaddr "Subnet-20.0.101.0" "Subnet-20.0.102.0" "Subnet-50.0.0.0"
set dstaddr "Subnet-10.0.101.0" "Subnet-10.0.102.0" "Subnet-30.0.0.0"
set action accept
set status enable
set schedule "always"
set service "ALL"
set logtraffic disable
next
edit 3
set name "Local To Internet"
set srcintf "port2"
set dstintf "port1"
set srcaddr "Subnet-10.0.101.0" "Subnet-10.0.102.0" "Subnet-30.0.0.0"
set dstaddr "all"
set action accept
set status enable
set schedule "always"
set service "ALL"
set logtraffic disable
set nat enable
next
end
Verify lại các firewall policy đã tạo bằng lệnh dưới.
show firewall policy
Hoặc sử dụng web console.
Hãy tạo các vlan test của DC Site.
config system interface
edit "VlanID 101"
set vdom "root"
set ip 10.0.101.254 255.255.255.0
set allowaccess ping ssh
set device-identification enable
set role lan
set interface "port2"
set vlanid 101
next
edit "VlanID 102"
set vdom "root"
set ip 10.0.102.254 255.255.255.0
set allowaccess ping ssh
set device-identification enable
set role lan
set interface "port2"
set vlanid 102
next
end
Tạo IP của Tunnel.
config router static
edit 1
set gateway 192.168.12.5
set device "port1"
next
edit 2
set dst 20.0.101.0 255.255.255.0
set device "VPN-DC-To-DR"
next
edit 3
set dst 20.0.102.0 255.255.255.0
set device "VPN-DC-To-DR"
next
edit 4
set dst 50.0.0.0 255.255.255.0
set device "VPN-DC-To-DR"
next
end
Verify lại các interface và các subnet đã tạo.
$ diagnose ip address list
IP=192.168.13.225->192.168.13.225/255.255.254.0 index=3 devname=port1
IP=30.0.0.1->30.0.0.1/255.255.255.0 index=6 devname=port2
IP=172.30.1.1->172.30.1.1/255.255.255.255 index=21 devname=VPN-DC-To-DR
IP=10.0.101.254->10.0.101.254/255.255.255.0 index=22 devname=VlanID 101
IP=10.0.102.254->10.0.102.254/255.255.255.0 index=23 devname=VlanID 102
Verify kết quả trên web console.
Static route để học các subnet của DR Site.
config router static
edit 2
set dst 20.0.101.0 255.255.255.0
set device "VPN-DC-To-DR"
next
edit 3
set dst 20.0.102.0 255.255.255.0
set device "VPN-DC-To-DR"
next
edit 4
set dst 50.0.0.0 255.255.255.0
set device "VPN-DC-To-DR"
next
end
Verify lại các route đã tạo.
$ get router info routing-table static
Routing table for VRF=0
S* 0.0.0.0/0 [10/0] via 192.168.12.5, port1
S 20.0.101.0/24 [10/0] via VPN-DC-To-DR tunnel 192.168.13.226
S 20.0.102.0/24 [10/0] via VPN-DC-To-DR tunnel 192.168.13.226
S 50.0.0.0/24 [10/0] via VPN-DC-To-DR tunnel 192.168.13.226
S 172.30.1.0/30 [5/0] via VPN-DC-To-DR tunnel 192.168.13.226
Verify kết quả trên web console.
2. DR Fortigate.
Cài đặt Hostname.
config sys global
set hostname DR-Fortigate
end
config system admin
edit admin
set password Hoanghd164
end
Đặt ip cho các interface đấu nối, trong đó port 1 sẽ đi internet và port 2 sẽ là mạng local.
config system interface
edit port1
set mode static
set ip 192.168.13.226 255.255.254.0
set allowaccess https http ssh ping snmp
next
edit "port2"
set ip 50.0.0.1 255.255.255.0
set allowaccess ping
set type physical
next
end
Cài đặt IP đấu nối giữa 2 site.
config router static
edit 1
set dst 0.0.0.0 0.0.0.0
set gateway 192.168.12.5
set device port1
end
Cài đặt DNS cho thiết bị.
config system dns
set primary 8.8.8.8
set secondary 1.1.1.1
end
Thay đổi port web management mặc định.
config system global
set admin-port 8480
set admin-sport 8443
end
Nếu dòng Fortigate của bạn có port fortilink thì bạn có thể xoá nó nếu không dùng đến và nếu thiết bị của bạn không có port fortilink thì bạn có thể bỏ qua bước này.
Hình ảnh cho thấy thiết bị của bạn có cổng fortilink
Mình có cổng fortilink nên mình sẽ thao tác các lệnh bên dưới.
config system ntp
set ntpsync disable
set server-mode disable
end
config system dhcp server
delete 1
end
config system interface
delete fortilink
end
Tạo kết nối VPN giữa 2 site.
config vpn ipsec phase1-interface
edit "VPN-DR-To-DC"
set interface "port1"
set peertype any
set net-device disable
set proposal des-sha256
set dhgrp 20
set remote-gw 192.168.13.225
set psksecret Hoanghd164
next
end
config vpn ipsec phase2-interface
edit "VPN-DC-To-DR"
set phase1name "VPN-DR-To-DC"
set proposal des-sha256
set pfs disable
set keepalive enable
set keylifeseconds 28800
next
end
Verify lại cấu hình VPN.
$ get vpn ipsec tunnel details
gateway
name: 'VPN-DR-To-DC'
type: route-based
local-gateway: 192.168.1.12:0 (static)
remote-gateway: 192.168.1.11:0 (static)
mode: ike-v1
interface: 'port1' (3)
rx packets: 45 bytes: 6084 errors: 0
tx packets: 52 bytes: 3564 errors: 4
dpd: on-demand/negotiated idle: 20000ms retry: 3 count: 0
selectors
name: 'VPN-DC-To-DR'
auto-negotiate: disable
mode: tunnel
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA
lifetime/rekey: 28800/28184
mtu: 1446
tx-esp-seq: 35
replay: enabled
inbound
spi: a4cff75f
enc: des 7586bbb3cf67d77f
auth: sha256 93d4a1caf662ca157b5cb110de6745896febed2b640eb9610fc4d36a77b23266
outbound
spi: 52f6eb7f
enc: des 28058a267950d8a8
auth: sha256 ac8b879543d238f6afb99d20855f3308ef0fbf838c7a50308be74badeeb3f3ec
Verify kết quả trên web console.
Mình tạo một số Address để test.
config firewall address
edit "Subnet-10.0.101.0"
set associated-interface "VPN-DR-To-DC"
set subnet 10.0.101.0 255.255.255.0
next
edit "Subnet-10.0.102.0"
set associated-interface "VPN-DR-To-DC"
set subnet 10.0.102.0 255.255.255.0
next
edit "Subnet-30.0.0.0"
set associated-interface "VPN-DR-To-DC"
set subnet 30.0.0.0 255.255.255.0
next
edit "Subnet-20.0.101.0"
set associated-interface "port2"
set subnet 20.0.101.0 255.255.255.0
next
edit "Subnet-20.0.102.0"
set associated-interface "port2"
set subnet 20.0.102.0 255.255.255.0
next
edit "Subnet-50.0.0.0"
set associated-interface "port2"
set subnet 50.0.0.0 255.255.255.0
next
end
Verify kết quả trên web console.
Sau khi tạo kết nối xong, hãy tạo firewall policy cho kết nối này.
config firewall policy
edit 1
set name "VPN DC To DR"
set srcintf "port2"
set dstintf "VPN-DR-To-DC"
set action accept
set srcaddr "Subnet-20.0.101.0" "Subnet-20.0.102.0" "Subnet-50.0.0.0"
set dstaddr "Subnet-10.0.101.0" "Subnet-10.0.102.0" "Subnet-30.0.0.0"
set schedule "always"
set service "ALL"
set logtraffic disable
next
edit 2
set name "VPN DR To DC"
set srcintf "VPN-DR-To-DC"
set dstintf "port2"
set action accept
set srcaddr "Subnet-10.0.101.0" "Subnet-10.0.102.0" "Subnet-30.0.0.0"
set dstaddr "Subnet-20.0.101.0" "Subnet-20.0.102.0" "Subnet-50.0.0.0"
set schedule "always"
set service "ALL"
set logtraffic disable
next
edit 3
set name "Local To Internet"
set srcintf "port2"
set dstintf "port1"
set srcaddr "Subnet-20.0.101.0" "Subnet-20.0.102.0" "Subnet-50.0.0.0"
set dstaddr "all"
set action accept
set status enable
set schedule "always"
set service "ALL"
set logtraffic disable
set nat enable
next
end
Verify lại các firewall policy đã tạo.
show firewall policy
Verify kết quả trên web console.
Hãy tạo các vlan test của DC Site.
config system interface
edit "VlanID 101"
set vdom root
set ip 20.0.101.254 255.255.255.0
set allowaccess ping ssh
set device-identification enable
set role lan
set interface "port2"
set vlanid 101
next
edit "VlanID 102"
set vdom root
set ip 20.0.102.254 255.255.255.0
set allowaccess ping ssh
set device-identification enable
set role lan
set interface "port2"
set vlanid 102
next
end
Tạo IP của Tunnel.
config system interface
edit "VPN-DR-To-DC"
set ip 172.30.1.2 255.255.255.255
set allowaccess ping ssh
set type tunnel
set remote-ip 172.30.1.1 255.255.255.252
set interface "port1"
next
end
Verify lại các interface và các subnet đã tạo.
$ diagnose ip address list
IP=192.168.13.226->192.168.13.226/255.255.254.0 index=3 devname=port1
IP=50.0.0.1->50.0.0.1/255.255.255.0 index=6 devname=port2
IP=172.30.1.2->172.30.1.2/255.255.255.255 index=21 devname=VPN-DR-To-DC
IP=20.0.101.254->20.0.101.254/255.255.255.0 index=22 devname=VlanID 101
IP=20.0.102.254->20.0.102.254/255.255.255.0 index=23 devname=VlanID 102
Verify kết quả trên web console.
Static route để học các subnet của DC Site.
config router static
edit 2
set dst 10.0.101.0 255.255.255.0
set device "VPN-DR-To-DC"
next
edit 3
set dst 10.0.102.0 255.255.255.0
set device "VPN-DR-To-DC"
next
edit 4
set dst 30.0.0.0 255.255.255.0
set device "VPN-DR-To-DC"
next
end
Verify lại các route đã tạo.
$ get router info routing-table static
Routing table for VRF=0
S* 0.0.0.0/0 [10/0] via 192.168.12.5, port1
S 10.0.101.0/24 [10/0] via VPN-DR-To-DC tunnel 192.168.13.225
S 10.0.102.0/24 [10/0] via VPN-DR-To-DC tunnel 192.168.13.225
S 30.0.0.0/24 [10/0] via VPN-DR-To-DC tunnel 192.168.13.225
S 172.30.1.0/30 [5/0] via VPN-DR-To-DC tunnel 192.168.13.225
3. Kiểm tra.
Trên Server của DC mình đặt ip là 30.0.0.254 của port số 2 trên Fortigate DC và check icmp và traceroute về phía DR, chúng ta sẽ có kết quả như dưới.
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 30.0.0.254 netmask 255.255.255.0 broadcast 30.0.0.255
inet6 fe80::20c:29ff:fe18:955e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:95:5e txqueuelen 1000 (Ethernet)
RX packets 31 bytes 3530 (3.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 37 bytes 2866 (2.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$ ping 50.0.0.254
PING 50.0.0.254 (50.0.0.254) 56(84) bytes of data.
64 bytes from 50.0.0.254: icmp_seq=2 ttl=62 time=2.59 ms
64 bytes from 50.0.0.254: icmp_seq=3 ttl=62 time=1.92 ms
64 bytes from 50.0.0.254: icmp_seq=4 ttl=62 time=2.42 ms
64 bytes from 50.0.0.254: icmp_seq=5 ttl=62 time=1.78 ms
--- 50.0.0.254 ping statistics ---
5 packets transmitted, 4 received, 20% packet loss, time 4023ms
rtt min/avg/max/mdev = 1.782/2.182/2.599/0.341 ms
$ traceroute 50.0.0.254
traceroute to 50.0.0.254 (50.0.0.254), 30 hops max, 60 byte packets
1 _gateway (30.0.0.1) 0.673 ms 1.370 ms 0.890 ms
2 172.30.1.2 (172.30.1.2) 7.444 ms 7.162 ms 7.120 ms
3 50-0-0-254.static.sonic.net (50.0.0.254) 7.089 ms 6.878 ms 6.710 ms
Tương tự trên Server của DR mình đặt ip là 50.0.0.254 của port số 2 trên Fortigate DR và check icmp và traceroute về phía DR, chúng ta sẽ có kết quả như dưới.
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 50.0.0.254 netmask 255.255.255.0 broadcast 50.0.0.255
inet6 fe80::20c:29ff:fedf:46ca prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:df:46:ca txqueuelen 1000 (Ethernet)
RX packets 185 bytes 19288 (19.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 323 bytes 23874 (23.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$ ping 30.0.0.254
PING 30.0.0.254 (30.0.0.254) 56(84) bytes of data.
64 bytes from 30.0.0.254: icmp_seq=1 ttl=62 time=2.51 ms
64 bytes from 30.0.0.254: icmp_seq=2 ttl=62 time=2.70 ms
64 bytes from 30.0.0.254: icmp_seq=3 ttl=62 time=2.36 ms
64 bytes from 30.0.0.254: icmp_seq=4 ttl=62 time=2.51 ms
--- 30.0.0.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 2.369/2.528/2.708/0.125 ms
$ traceroute 30.0.0.254
traceroute to 30.0.0.254 (30.0.0.254), 30 hops max, 60 byte packets
1 50-0-0-1.static.sonic.net (50.0.0.1) 1.510 ms 1.283 ms 0.584 ms
2 172.30.1.1 (172.30.1.1) 6.518 ms 6.311 ms 6.164 ms
3 30.0.0.254 (30.0.0.254) 8.519 ms 8.957 ms 8.743 ms