Friday, November 1, 2024

[Fortigate] VPN Site to Site sử dụng mã hoá 2 phase

-

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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories