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

วิธีการตั้งค่า VPN ที่ใช้ IPsec ด้วย Strongswan บน CentOS/RHEL 8


strongSwan เป็นโซลูชัน VPN แบบโอเพ่นซอร์ส หลายแพลตฟอร์ม ทันสมัยและสมบูรณ์บน IPsec สำหรับ Linux ที่ให้การสนับสนุน การแลกเปลี่ยนคีย์อินเทอร์เน็ต อย่างเต็มรูปแบบ (ทั้ง IKEv1 และ IKEv2) เพื่อสร้างการเชื่อมโยงความปลอดภัย (SA) ระหว่างสองเพียร์ มีคุณลักษณะครบถ้วน เป็นแบบโมดูลาร์โดยการออกแบบ และมีปลั๊กอินมากมายที่ปรับปรุงฟังก์ชันการทำงานหลัก

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

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

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

อย่าลืมใช้ที่อยู่ IP จริงของคุณในระหว่างการกำหนดค่าขณะปฏิบัติตามคำแนะนำ

ไซต์ 1 เกตเวย์
Public IP: 192.168.56.7
Private IP: 10.10.1.1/24
Private Subnet: 10.10.1.0/24
เกตเวย์ไซต์ 2
Public IP:  192.168.56.6
Private IP: 10.20.1.1/24
Private Subnet: 10.20.1.0/24

ขั้นตอนที่ 1: การเปิดใช้งานการส่งต่อ IP เคอร์เนลใน CentOS 8

1. เริ่มต้นด้วยการเปิดใช้งานฟังก์ชันการส่งต่อ IP เคอร์เนลในไฟล์การกำหนดค่า /etc/sysctl.conf บนเกตเวย์ VPN ทั้งสอง

vi /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. หลังจากบันทึกการเปลี่ยนแปลงในไฟล์แล้ว ให้รันคำสั่งต่อไปนี้เพื่อโหลดพารามิเตอร์เคอร์เนลใหม่ในรันไทม์

sysctl -p

3. ถัดไป สร้างเส้นทางคงที่ถาวรในไฟล์ /etc/sysconfig/network-scripts/route-eth0 บนเกตเวย์ความปลอดภัยทั้งสอง

vi /etc/sysconfig/network-scripts/route-eth0

เพิ่มบรรทัดต่อไปนี้ในไฟล์

#Site 1 Gateway
10.20.1.0/24  via 192.168.56.7

#Site 2 Gateway
10.10.1.0/24 via 192.168.56.6

4. จากนั้นรีสตาร์ทตัวจัดการเครือข่ายเพื่อใช้การเปลี่ยนแปลงใหม่

systemctl restart NetworkManager

ขั้นตอนที่ 2: การติดตั้ง strongSwan ใน CentOS 8

5. แพ็คเกจ strongswan มีให้ในที่เก็บ EPEL หากต้องการติดตั้ง คุณต้องเปิดใช้งานพื้นที่เก็บข้อมูล EPEL จากนั้นติดตั้ง Strongwan บนเกตเวย์ความปลอดภัยทั้งสอง

dnf install epel-release
dnf install strongswan

6. หากต้องการตรวจสอบเวอร์ชันของ strongswan ที่ติดตั้งบนเกตเวย์ทั้งสอง ให้รันคำสั่งต่อไปนี้

strongswan version

7. ต่อไป ให้เริ่มบริการ strongswan และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตระบบ จากนั้นตรวจสอบสถานะบนเกตเวย์ความปลอดภัยทั้งสอง

systemctl start strongswan 
systemctl enable strongswan
systemctl status strongswan

หมายเหตุ: เวอร์ชันล่าสุดของ strongswan ใน CentOS/REHL 8 มาพร้อมกับการรองรับทั้ง swanctl (ยูทิลิตีบรรทัดคำสั่งแบบพกพาใหม่ที่นำมาใช้กับ strongSwan 5.2.0 ใช้เพื่อกำหนดค่า ควบคุม และตรวจสอบ IKE daemon Charon โดยใช้ปลั๊กอิน vici) และ สตาร์ทเตอร์ (หรือ ipsec) โดยใช้ปลั๊กอิน stroke ที่เลิกใช้แล้ว

8. ไดเร็กทอรีการกำหนดค่าหลักคือ /etc/strongswan/ ซึ่งมีไฟล์การกำหนดค่าสำหรับปลั๊กอินทั้งสอง:

ls /etc/strongswan/

สำหรับคู่มือนี้ เราจะใช้ยูทิลิตี้ IPsec ซึ่งเรียกใช้โดยใช้คำสั่ง strongswan และอินเทอร์เฟซ stroke ดังนั้นเราจะใช้ไฟล์การกำหนดค่าต่อไปนี้:

  • /etc/strongswan/ipsec.conf – ไฟล์การกำหนดค่าสำหรับระบบย่อย StrongSwan IPsec
  • /etc/strongswan/ipsec.secrets – ไฟล์ความลับ

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

9. ในขั้นตอนนี้ คุณต้องกำหนดค่าโปรไฟล์การเชื่อมต่อในแต่ละเกตเวย์ความปลอดภัยสำหรับแต่ละไซต์โดยใช้ไฟล์การกำหนดค่า /etc/strongswan/ipsec.conf strongswan

การกำหนดค่าโปรไฟล์การเชื่อมต่อไซต์ 1

cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf

คัดลอกและวางการกำหนดค่าต่อไปนี้ลงในไฟล์

config setup
        charondebug="all"
        uniqueids=yes
conn ateway1-to-gateway2
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=192.168.56.7
        leftsubnet=10.10.1.1/24
        right=192.168.56.6
        rightsubnet=10.20.1.1/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

การกำหนดค่าโปรไฟล์การเชื่อมต่อไซต์ 2

cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf

คัดลอกและวางการกำหนดค่าต่อไปนี้ลงในไฟล์:

config setup
        charondebug="all"
        uniqueids=yes
conn 2gateway-to-gateway1
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=192.168.56.6
        leftsubnet=10.20.1.1/24
        right=192.168.56.7
        rightsubnet=10.10.1.1/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 gateway1-to-gateway2 – ใช้เพื่อตั้งชื่อการเชื่อมต่อ
  • ประเภท – กำหนดประเภทการเชื่อมต่อ
  • อัตโนมัติ – ใช้เพื่อประกาศวิธีจัดการการเชื่อมต่อเมื่อ IPSec เริ่มต้นหรือรีสตาร์ท
  • keyexchange – ประกาศเวอร์ชันของโปรโตคอล IKE ที่จะใช้
  • การตรวจสอบสิทธิ์ – ระบุว่าเพื่อนร่วมงานควรตรวจสอบสิทธิ์ซึ่งกันและกันอย่างไร
  • ซ้าย – ประกาศที่อยู่ IP ของอินเทอร์เฟซเครือข่ายสาธารณะของผู้เข้าร่วมด้านซ้าย
  • leftsubnet – ประกาศเครือข่ายย่อยส่วนตัวที่อยู่ด้านหลังผู้เข้าร่วมด้านซ้าย
  • ขวา – ประกาศที่อยู่ IP ของอินเทอร์เฟซเครือข่ายสาธารณะของผู้เข้าร่วมที่ถูกต้อง
  • rightsubnet – ประกาศเครือข่ายย่อยส่วนตัวที่อยู่ด้านหลังผู้เข้าร่วมด้านซ้าย
  • ike – ใช้เพื่อประกาศรายการอัลกอริธึมการเข้ารหัส/การรับรองความถูกต้องของ IKE/ISAKMP SA ที่จะใช้ โปรดทราบว่านี่อาจเป็นรายการที่คั่นด้วยเครื่องหมายจุลภาค
  • esp – ระบุรายการอัลกอริทึมการเข้ารหัส/การรับรองความถูกต้อง ESP ที่จะใช้สำหรับการเชื่อมต่อ
  • ก้าวร้าว – ประกาศว่าจะใช้โหมดก้าวร้าวหรือโหมดหลัก
  • การคีย์ - ประกาศจำนวนความพยายามที่ควรดำเนินการเพื่อเจรจาการเชื่อมต่อ
  • ikelifetime – ระบุระยะเวลาที่ช่องทางการคีย์ของการเชื่อมต่อควรจะคงอยู่ก่อนที่จะมีการเจรจาใหม่
  • อายุการใช้งาน – ระบุระยะเวลาที่อินสแตนซ์เฉพาะของการเชื่อมต่อควรคงอยู่ ตั้งแต่การเจรจาสำเร็จไปจนถึงการหมดอายุ
  • dpddelay - ประกาศช่วงเวลาที่ข้อความ R_U_THERE/การแลกเปลี่ยนข้อมูลจะถูกส่งไปยังเพียร์
  • dpdtimeout – ใช้เพื่อประกาศช่วงเวลาหมดเวลา หลังจากนั้นการเชื่อมต่อไปยังเพียร์ทั้งหมดจะถูกลบในกรณีที่ไม่มีการใช้งาน
  • dpdaction – ระบุวิธีใช้โปรโตคอล Dead Peer Detection (DPD) เพื่อจัดการการเชื่อมต่อ

คุณสามารถดูคำอธิบายของพารามิเตอร์การกำหนดค่าทั้งหมดสำหรับระบบย่อย strongSwan IPsec ได้โดยการอ่านหน้าคู่มือ ipsec.conf

man ipsec.conf

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

10. ถัดไป คุณต้องสร้าง PSK ที่แข็งแกร่งเพื่อให้เพื่อนใช้สำหรับการตรวจสอบสิทธิ์ดังต่อไปนี้

head -c 24 /dev/urandom | base64

11. เพิ่ม PSK ในไฟล์ /etc/strongswan/ipsec.conf บนเกตเวย์ความปลอดภัยทั้งสอง

vi /etc/strongswan/ipsec.secrets

ป้อนบรรทัดต่อไปนี้ในไฟล์

#Site 1 Gateway
192.168.56.7  192.168.56.6 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"

#Site 1 Gateway
192.168.56.6  192.168.56.7 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"

12. จากนั้นเริ่มบริการ strongsan และตรวจสอบสถานะการเชื่อมต่อ

systemctl restart strongswan
strongswan status

13. ทดสอบว่าคุณสามารถเข้าถึงเครือข่ายย่อยส่วนตัวจากเกตเวย์ความปลอดภัยอันใดอันหนึ่งได้หรือไม่ โดยเรียกใช้คำสั่ง ping

ping 10.20.1.1
ping 10.10.1.1

14. สุดท้ายแต่ไม่ท้ายสุด หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง strongswan เพื่อเรียกการเชื่อมต่อขึ้น/ลงด้วยตนเอง และอื่นๆ โปรดดูหน้าวิธีใช้ของ Strongswan

strongswan --help

นั่นคือทั้งหมดที่สำหรับตอนนี้! หากต้องการแบ่งปันความคิดของคุณกับเราหรือถามคำถาม โปรดติดต่อเราผ่านแบบฟอร์มคำติชมด้านล่าง และหากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับยูทิลิตี้ Swanctl ใหม่และโครงสร้างการกำหนดค่าใหม่ที่ยืดหยุ่นมากขึ้น โปรดดูเอกสารประกอบผู้ใช้ StrongSwan