วิธีการตั้งค่า 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