ค้นหาเว็บไซต์

วิธีการตั้งค่า VPN ที่ใช้ IPsec ด้วย Strongswan บน Debian และ Ubuntu


strongSwan คือการใช้งาน VPN (Virtual Private Network) แบบโอเพ่นซอร์ส ข้ามแพลตฟอร์ม คุณสมบัติครบถ้วน และใช้กันอย่างแพร่หลาย ซึ่งทำงานบน Linux, FreeBSD, OS X, Windows, Android และ iOS โดยหลักแล้วจะเป็นคีย์ดีมอนที่รองรับโปรโตคอล Internet Key Exchange (IKEv1 และ IKEv2) เพื่อสร้างการเชื่อมโยงด้านความปลอดภัย (SA แข็งแกร่ง>) ระหว่างเพื่อนสองคน

บทความนี้อธิบายวิธีตั้งค่าเกตเวย์ IPSec VPN แบบไซต์ต่อไซต์โดยใช้ strongSwan บนเซิร์ฟเวอร์ Ubuntu และ Debian . เมื่อพิจารณาจากไซต์ต่อไซต์ เราหมายถึงเกตเวย์ความปลอดภัยแต่ละเกตเวย์มีซับเน็ตอยู่ด้านหลัง นอกจากนี้ เพื่อนร่วมงานจะตรวจสอบสิทธิ์ซึ่งกันและกันโดยใช้คีย์ที่แชร์ล่วงหน้า (PSK)

สภาพแวดล้อมการทดสอบ

อย่าลืมแทนที่ IP ต่อไปนี้ด้วย 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: การเปิดใช้งานการส่งต่อแพ็กเก็ตเคอร์เนล

1. ขั้นแรก คุณต้องกำหนดค่าเคอร์เนลเพื่อเปิดใช้งานการส่งต่อแพ็กเก็ตโดยการเพิ่มตัวแปรระบบที่เหมาะสมในไฟล์การกำหนดค่า /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. หากคุณเปิดใช้งานบริการไฟร์วอลล์ 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. อัปเดตแคชแพ็กเกจของคุณบนเกตเวย์ความปลอดภัยทั้งสอง และติดตั้งแพ็คเกจ strongswan โดยใช้ตัวจัดการแพ็คเกจ APT

sudo apt update
sudo apt install strongswan 

6. เมื่อการติดตั้งเสร็จสมบูรณ์ สคริปต์การติดตั้งจะเริ่มบริการ strongswan และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตระบบ คุณสามารถตรวจสอบสถานะและเปิดใช้งานได้หรือไม่โดยใช้คำสั่งต่อไปนี้

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

ขั้นตอนที่ 3: การกำหนดค่าเกตเวย์ความปลอดภัย

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 nano /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

นี่คือความหมายของพารามิเตอร์การกำหนดค่าแต่ละรายการ:

  • การตั้งค่าการกำหนดค่า – ระบุข้อมูลการกำหนดค่าทั่วไปสำหรับ IPSec ซึ่งใช้กับการเชื่อมต่อทั้งหมด
  • charondebug – กำหนดจำนวนเอาต์พุตการดีบัก Charon ที่ควรบันทึก
  • รหัสที่ไม่ซ้ำ – ระบุว่ารหัสผู้เข้าร่วมรายใดรายหนึ่งควรไม่ซ้ำกันหรือไม่
  • conn prodgateway-to-devgateway – กำหนดชื่อการเชื่อมต่อ
  • ประเภท – กำหนดประเภทการเชื่อมต่อ
  • อัตโนมัติ – วิธีจัดการการเชื่อมต่อเมื่อ IPSec เริ่มทำงานหรือรีสตาร์ท
  • keyexchange – กำหนดเวอร์ชันของโปรโตคอล IKE ที่จะใช้
  • การตรวจสอบสิทธิ์ – กำหนดวิธีที่เพื่อนร่วมงานควรตรวจสอบสิทธิ์ซึ่งกันและกัน
  • ซ้าย – กำหนดที่อยู่ IP ของอินเทอร์เฟซเครือข่ายสาธารณะของผู้เข้าร่วมด้านซ้าย
  • leftsubnet - ระบุเครือข่ายย่อยส่วนตัวที่อยู่ด้านหลังผู้เข้าร่วมด้านซ้าย
  • ขวา – ระบุที่อยู่ IP ของอินเทอร์เฟซเครือข่ายสาธารณะของผู้เข้าร่วมที่ถูกต้อง
  • rightsubnet – ระบุเครือข่ายย่อยส่วนตัวที่อยู่ด้านหลังผู้เข้าร่วมด้านซ้าย
  • ike – กำหนดรายการอัลกอริทึมการเข้ารหัส/การรับรองความถูกต้องของ IKE/ISAKMP SA ที่จะใช้ คุณสามารถเพิ่มรายการที่คั่นด้วยเครื่องหมายจุลภาคได้
  • esp – กำหนดรายการอัลกอริทึมการเข้ารหัส/การรับรองความถูกต้อง ESP ที่จะใช้สำหรับการเชื่อมต่อ คุณสามารถเพิ่มรายการที่คั่นด้วยเครื่องหมายจุลภาคได้
  • ก้าวร้าว – ระบุว่าจะใช้โหมดก้าวร้าวหรือโหมดหลัก
  • การคีย์ - ระบุจำนวนความพยายามที่ควรดำเนินการเพื่อเจรจาการเชื่อมต่อ
  • ikelifetime – ระบุระยะเวลาที่ช่องทางการคีย์ของการเชื่อมต่อควรมีอายุการใช้งานก่อนที่จะมีการเจรจาใหม่
  • อายุการใช้งาน – กำหนดระยะเวลาที่อินสแตนซ์เฉพาะของการเชื่อมต่อควรคงอยู่ ตั้งแต่การเจรจาสำเร็จไปจนถึงการหมดอายุ
  • dpddelay - ระบุช่วงเวลาที่ข้อความ R_U_THERE/การแลกเปลี่ยนข้อมูลจะถูกส่งไปยังเพียร์
  • dpdtimeout – ระบุช่วงเวลาหมดเวลา หลังจากนั้นการเชื่อมต่อไปยังเพียร์ทั้งหมดจะถูกลบในกรณีที่ไม่มีการใช้งาน
  • dpdaction – กำหนดวิธีใช้โปรโตคอล Dead Peer Detection (DPD) เพื่อจัดการการเชื่อมต่อ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์การกำหนดค่าข้างต้น โปรดอ่านหน้าคู่มือ ipsec.conf โดยการเรียกใช้คำสั่ง

man ipsec.conf

ขั้นตอนที่ 4: การกำหนดค่า PSK สำหรับการตรวจสอบสิทธิ์แบบ Peer-to-Peer

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

นั่นคือทั้งหมด! ในบทความนี้ เราได้อธิบายวิธีตั้งค่า IPSec VPN แบบไซต์ต่อไซต์โดยใช้ strongSwan บนเซิร์ฟเวอร์ Ubuntu และ Debian โดยที่ทั้งสอง เกตเวย์ความปลอดภัยได้รับการกำหนดค่าให้ตรวจสอบสิทธิ์ซึ่งกันและกันโดยใช้ PSK หากคุณมีคำถามหรือความคิดเห็นใดๆ ที่จะแบ่งปัน โปรดติดต่อเราผ่านแบบฟอร์มคำติชมด้านล่าง