ວິທີການຕັ້ງຄ່າ VPN ທີ່ໃຊ້ IPsec ກັບ Strongswan ເທິງ Debian ແລະ Ubuntu


strongSwan ແມ່ນໂປແກຼມທີ່ໃຊ້ເປີດ, ຂ້າມ, ມີໂປແກຼມເຕັມຮູບແບບແລະ ນຳ ໃຊ້ຢ່າງກວ້າງຂວາງໃນ IPsec VPN (Virtual Private Network) ທີ່ໃຊ້ໃນ Linux, FreeBSD, OS X, Windows, Android, ແລະ iOS. ມັນຕົ້ນຕໍແມ່ນ daemon keying ທີ່ສະຫນັບສະຫນູນໂປແກຼມແລກປ່ຽນ Internet Key (IKEv1 ແລະ IKEv2) ເພື່ອສ້າງຕັ້ງສະມາຄົມຄວາມປອດໄພ (SA) ລະຫວ່າງສອງມິດສະຫາຍ.

ບົດຂຽນນີ້ຈະອະທິບາຍເຖິງວິທີການຕັ້ງຄ່າປະຕູໄຊທ໌ IPSec VPN ທີ່ໃຊ້ເວບໄຊທ໌ໂດຍໃຊ້ strongSwan ໃນເຄື່ອງແມ່ຂ່າຍອູແກຣນແລະ Debian ໂດຍການເຂົ້າເຖິງເວັບໄຊທ໌້ພວກເຮົາ ໝາຍ ຄວາມວ່າແຕ່ລະປະຕູປ້ອງກັນຄວາມປອດໄພມີຊ່ອງທາງທີ່ຢູ່ເບື້ອງຫຼັງ. ນອກຈາກນີ້, ມິດສະຫາຍຈະກວດສອບຄວາມຖືກຕ້ອງຂອງກັນແລະກັນໂດຍໃຊ້ຄີກ່ອນ (PSK).

ຢ່າລືມຈື່ IPs ຕໍ່ໄປນີ້ກັບ IP ຂອງທ່ານໃນໂລກເພື່ອ ກຳ ນົດສະພາບແວດລ້ອມຂອງທ່ານ.

ສະຖານທີ່ 1 ປະຕູໄຊ (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

ສະຖານທີ່ 2 ປະຕູໄຊ (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

ຂັ້ນຕອນທີ 1: ການເປີດໃຊ້ການສົ່ງຕໍ່ kernel Packet

1. ທຳ ອິດທ່ານ ຈຳ ເປັນຕ້ອງ ກຳ ຫນົດຄ່າ kernel ເພື່ອໃຫ້ສາມາດສົ່ງຕໍ່ການສົ່ງຕໍ່ໂດຍການເພີ່ມຕົວແປຂອງລະບົບທີ່ ເໝາະ ສົມໃນ /etc/sysctl.conf ໄຟລ໌ການຕັ້ງຄ່າທັງສອງປະຕູຄວາມປອດໄພ.

$ sudo vim /etc/sysctl.conf

ຊອກຫາສາຍຕໍ່ໄປນີ້ແລະບໍ່ສະແດງຄວາມຄິດເຫັນຂອງພວກເຂົາແລະ ກຳ ນົດຄຸນຄ່າຂອງມັນຕາມທີ່ສະແດງ (ອ່ານ ຄຳ ເຫັນຢູ່ໃນເອກະສານ ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ).

net.ipv4.ip_forward = 1 
net.ipv6.conf.all.forwarding = 1 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 

2. ຕໍ່ໄປ, ໂຫລດການຕັ້ງຄ່າ ໃໝ່ ໂດຍການເຮັດວຽກຕາມ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo sysctl -p

3. ຖ້າທ່ານມີການບໍລິການ FireFering UFW, ທ່ານ ຈຳ ເປັນຕ້ອງເພີ່ມກົດລະບຽບຕໍ່ໄປນີ້ໃນເອກະສານການຕັ້ງຄ່າ /etc/ufw/before.rules ກ່ອນທີ່ກົດລະບຽບການກັ່ນຕອງຢູ່ໃນປະຕູຄວາມປອດໄພບໍ່ວ່າຈະ.

ສະຖານທີ່ 1 ປະຕູໄຊ (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

ສະຖານທີ່ 2 ປະຕູໄຊ (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. ເມື່ອກົດລະບຽບຂອງໄຟວໍໄດ້ຖືກເພີ່ມ, ຫຼັງຈາກນັ້ນໃຫ້ ນຳ ໃຊ້ການປ່ຽນ ໃໝ່ ໂດຍການເລີ່ມ ໃໝ່ UFW ຕາມທີ່ສະແດງ.

$ sudo ufw disable 
$ sudo ufw enable

ຂັ້ນຕອນທີ 2: ການຕິດຕັ້ງ strongSwan ໃນ Debian ແລະ Ubuntu

5. ປັບປຸງຖານຄວາມ ຈຳ ຂອງແພັກເກດຂອງທ່ານທັງສອງປະຕູຄວາມປອດໄພແລະຕິດຕັ້ງແພັກເກດທີ່ແຂງໂດຍໃຊ້ຜູ້ຈັດການຊຸດ APT.

$ sudo apt update
$ sudo apt install strongswan 

6. ເມື່ອການຕິດຕັ້ງ ສຳ ເລັດແລ້ວ, ຕົວອັກສອນທີ່ຕິດຕັ້ງຈະເລີ່ມຕົ້ນການບໍລິການຂອງ strongswan ແລະຊ່ວຍໃຫ້ມັນເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດເມື່ອ boot system. ທ່ານສາມາດກວດເບິ່ງສະຖານະພາບຂອງມັນແລະວ່າມັນຖືກເປີດໃຊ້ໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo systemctl status strongswan.service
$ sudo systemctl is-enabled strongswan.service

ຂັ້ນຕອນທີ 3: ການຕັ້ງຄ່າຄວາມປອດໄພ Gateways

7. ຕໍ່ໄປ, ທ່ານ ຈຳ ເປັນຕ້ອງ ກຳ ນົດຄ່າປະຕູຄວາມປອດໄພໂດຍໃຊ້ແຟ້ມການຕັ້ງຄ່າ /etc/ipsec.conf.

ສະຖານທີ່ 1 ປະຕູໄຊ (tecmint-devgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

ຄັດລອກແລະວາງການຕັ້ງຄ່າຕໍ່ໄປນີ້ໃນແຟ້ມ.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

ສະຖານທີ່ 2 ປະຕູໄຊ (tecmint-prodgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo cp /etc/ipsec.conf 

ຄັດລອກແລະວາງການຕັ້ງຄ່າຕໍ່ໄປນີ້ໃນແຟ້ມ.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

ນີ້ແມ່ນຄວາມ ໝາຍ ຂອງແຕ່ລະພາລາມິເຕີການຕັ້ງຄ່າ:

  • config setup - ລະບຸຂໍ້ມູນການຕັ້ງຄ່າທົ່ວໄປ ສຳ ລັບ IPSec ເຊິ່ງໃຊ້ກັບການເຊື່ອມຕໍ່ທັງ ໝົດ.
  • charondebug - ກຳ ນົດວ່າຜົນຜະລິດ debugging ຂອງ Charon ຄວນເຂົ້າສູ່ລະບົບເທົ່າໃດ.
  • ເອກະລັກສະເພາະ - ລະບຸວ່າ ID ຂອງຜູ້ເຂົ້າຮ່ວມສະເພາະໃດ ໜຶ່ງ ຄວນຈະຖືກເກັບໄວ້ເປັນເອກະລັກ.
  • conn prodgateway-to-devgateway - ກຳ ນົດຊື່ການເຊື່ອມຕໍ່.
  • type - ກຳ ນົດປະເພດການເຊື່ອມຕໍ່.
  • auto - ວິທີການຈັດການການເຊື່ອມຕໍ່ເມື່ອ IPSec ເລີ່ມຕົ້ນຫຼືເລີ່ມຕົ້ນ ໃໝ່.
  • keyexchange - ກຳ ນົດສະບັບຂອງໂປໂຕຄອນ IKE ເພື່ອໃຊ້.
  • authby - ກຳ ນົດວິທີທີ່ເພື່ອນຮ່ວມງານຄວນກວດສອບເຊິ່ງກັນແລະກັນ.
  • ຊ້າຍ - ກຳ ນົດທີ່ຢູ່ IP ຂອງອິນເຕີເນັດເຄືອຂ່າຍຂອງຜູ້ເຂົ້າຮ່ວມຝ່າຍຊ້າຍ.
  • leftsubnet - ກ່າວເຖິງ subnet ສ່ວນຕົວຢູ່ເບື້ອງຫຼັງຂອງຜູ້ເຂົ້າຮ່ວມເບື້ອງຊ້າຍ.
  • ຖືກຕ້ອງ - ລະບຸທີ່ຢູ່ IP ຂອງອິນເຕີເນັດເຄືອຂ່າຍສາທາລະນະຂອງຜູ້ເຂົ້າຮ່ວມທີ່ຖືກຕ້ອງ.
  • rightsubnet - ລະບຸເຄືອຂ່າຍສ່ວນຕົວທີ່ຢູ່ເບື້ອງຫຼັງຜູ້ເຂົ້າຮ່ວມເບື້ອງຊ້າຍ.
  • ike - ກຳ ນົດບັນຊີລາຍຊື່ຂອງສູດການເຂົ້າລະຫັດ/ລະບົບການກວດສອບຄວາມຖືກຕ້ອງຂອງ IKE/ISAKMP SA. ທ່ານສາມາດເພີ່ມລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງ ໝາຍ ຈຸດ.
  • esp - ກຳ ນົດບັນຊີລາຍຊື່ຂອງ ESP encryption/authentication algorithm ທີ່ຈະໃຊ້ ສຳ ລັບການເຊື່ອມຕໍ່. ທ່ານສາມາດເພີ່ມລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງ ໝາຍ ຈຸດ.
  • ຮຸກຮານ - ລະບຸວ່າຈະໃຊ້ແບບຮຸກຮານຫລື Main Mode.
  • keyingtries - ລະບຸ ຈຳ ນວນຄວາມພະຍາຍາມທີ່ຄວນເຮັດເພື່ອເຈລະຈາການເຊື່ອມຕໍ່.
  • ikelifetime - ລະບຸວ່າຊ່ອງທາງ ສຳ ຄັນຂອງການເຊື່ອມຕໍ່ຄວນຈະມີຢູ່ຕໍ່ໄປກ່ອນທີ່ຈະມີການເຈລະຈາຄືນ ໃໝ່.
  • ຕະຫຼອດຊີວິດ - ກຳ ນົດໄລຍະເວລາຂອງຕົວຢ່າງສະເພາະຂອງການເຊື່ອມຕໍ່ໃດ ໜຶ່ງ, ຈາກການເຈລະຈາທີ່ປະສົບຜົນ ສຳ ເລັດຈົນ ໝົດ ອາຍຸ.
  • dpddelay - ລະບຸໄລຍະຫ່າງຂອງເວລາທີ່ຂໍ້ຄວາມ/ການແລກປ່ຽນຂໍ້ມູນຂ່າວສານ R_U_THERAL ຖືກສົ່ງໄປຫາມິດສະຫາຍ.
  • dpdtimeout - ລະບຸຊ່ວງເວລາ ໝົດ ເວລາ, ຫຼັງຈາກນັ້ນການເຊື່ອມຕໍ່ທັງ ໝົດ ກັບມິດສະຫາຍຖືກລຶບຖິ້ມໃນກໍລະນີທີ່ບໍ່ມີປະສິດຕິພາບ.
  • dpdaction - ກຳ ນົດວິທີການ ນຳ ໃຊ້ອະນຸສັນຍາການຊອກຄົ້ນຫາແບບເຈາະຈີ້ມແບບຕາຍ (DPD) ເພື່ອຈັດການການເຊື່ອມຕໍ່.

ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຕົວ ກຳ ນົດການຕັ້ງຄ່າຂ້າງເທິງ, ອ່ານ ໜ້າ man ຂອງ ipsec.conf ໂດຍການແລ່ນ ຄຳ ສັ່ງ.

$ man ipsec.conf

ຂັ້ນຕອນທີ 4: ການຕັ້ງຄ່າ PSK ສຳ ລັບ Peer-to-Peer Authentication

8. ຫຼັງຈາກການຕັ້ງຄ່າທັງສອງປະຕູຄວາມປອດໄພ, ສ້າງ PSK ທີ່ປອດໄພທີ່ຈະໃຊ້ໂດຍມິດສະຫາຍໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ head -c 24 /dev/urandom | base64

9. ຕໍ່ໄປ, ຕື່ມ PSK ເຂົ້າໃນເອກະສານ /etc/ipsec.secrets ຢູ່ທັງສອງປະຕູ.

$ sudo vim /etc/ipsec.secrets

ຄັດລອກແລະວາງສາຍຕໍ່ໄປນີ້.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. ເລີ່ມໂຄງການ IPSec ຄືນ ໃໝ່ ແລະກວດເບິ່ງສະຖານະພາບຂອງມັນເພື່ອເບິ່ງການເຊື່ອມຕໍ່.

$ sudo ipsec restart
$ sudo ipsec status

11. ສຸດທ້າຍ, ກວດສອບວ່າທ່ານສາມາດເຂົ້າເຖິງເຄືອຂ່າຍຍ່ອຍສ່ວນຕົວຈາກປະຕູຄວາມປອດໄພບໍ່ວ່າຈະໂດຍການແລ່ນ ຄຳ ສັ່ງ ping.

$ ping 192.168.0.101
$ ping 10.0.2.15

12. ນອກຈາກນີ້, ທ່ານສາມາດຢຸດແລະເລີ່ມ IPSec ຕາມທີ່ສະແດງ.

$ sudo ipsec stop
$ sudo ipsec start

13. ເພື່ອຮູ້ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບ ຄຳ ສັ່ງ IPSec ເພື່ອ ນຳ ເອົາການເຊື່ອມຕໍ່ດ້ວຍຕົນເອງແລະອື່ນໆ, ເບິ່ງ ໜ້າ ຊ່ວຍເຫຼືອຂອງ IPSec.

$ ipsec --help

ຫມົດເທົ່ານີ້! ໃນບົດຂຽນນີ້, ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕັ້ງ VPN-site-site-site IPSec VPN ໂດຍໃຊ້ strongSwan ໃນເຄື່ອງແມ່ຂ່າຍຂອງ Ubuntu ແລະ Debian ເຊິ່ງທັງສອງປະຕູຄວາມປອດໄພໄດ້ຖືກ ກຳ ນົດເພື່ອກວດສອບເຊິ່ງກັນແລະກັນໂດຍໃຊ້ PSK. ຖ້າທ່ານມີ ຄຳ ຖາມຫຼືຄວາມຄິດທີ່ຈະແບ່ງປັນ, ຕິດຕໍ່ຫາພວກເຮົາຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.