Thursday, April 2, 2026

Setup connection IPSec Fortinet VPN

Ref:

  • https://community.fortinet.com/t5/FortiGate/Technical-Tip-IPsec-connection-between-FortiGate-and-Ubuntu-via/ta-p/207149

Env

  • Ubuntu 24.04 (sudo apt upgrade)

# install main and plugin package strongswan 

sudo apt update

sudo apt install strongswan

sudo apt install charon-systemd

sudo apt install strongswan libcharon-extra-plugins libstrongswan-standard-plugins

# check plugin load able

sudo ipsec statusall | grep "plugins"

  • คอนฟิก /etc/ipsec.conf อย่าลืมกันเหนียวก่อน

# config /etc/ipsec.conf เพิ่ม connection ไว้ด้านล่างสุดได้เลย อย่าลืม ด้านล่าง FGT ต้อง indent ด้วยนะ

conn "FGT"

    keyexchange=ikev1

    ikelifetime=1440m

    keylife=720m

    aggressive=yes            # <--- ลองเปลี่ยนจาก no เป็น yes

    ike=aes256-sha256-modp2048 # <--- มั่นใจว่าเป็น modp2048 (Group 14) [cite: 100, 137]

    esp=aes256-sha256-modp2048

    xauth=client

    left=%defaultroute

    leftsourceip=%config

    leftauth=psk

    rightauth=psk

    leftauth2=xauth

    right=122.x.x.xxx      # [cite: 54]

    rightid=122.x.x.xxx    # [cite: 54]

    rightsubnet=0.0.0.0/0

    xauth_identity=myuservpn     # <--- ใส่ Username ตามตัวอย่าง [cite: 157]

    auto=add

  • คอนฟิก secret key อย่าลืมกันเหนียวด้วย /etc/ipsec.secret

# config /etc/ipsec.secrets

122.x.x.xxx : PSK "pass share key"

myuservpn : XAUTH "mypasswordvpn"

  • ผิดอยู่ตั้งนานที่ตรงนี้

# % 122.x.x.xxx : PSK "passkey" ไม่ต้องมี % นำหน้า 122

  • สตาร์ท vpn connection ที่สร้างไว้ชือ่ FGT

# start vpn connection 

sudo ufw allow 500/udp

sudo ufw allow 4500/udp

sudo ipsec restart

sudo ipsec up FGT

  • ถ้าเชื่อมต่อได้ปกติ จะขึ้นประมาณนี้

connection 'FGT' established successfully

  • หยุดก็น่าจะประมาณนี้
sudo ipsec down FGT
IKE_SA [1] closed successfully
  • ถ้ายังเชื่อมต่อไม่ได้ให้ไปดู log
sudo tail -f /var/log/syslog | grep --color=auto charon
  • แล้วเอา log ไปถาม ลูกพี่ต่อนะจ้ะ
เพิ่มเติม
  • กรณีสั่ง sudo ipsec up CON_NAME แล้ว shutdown เครื่องโดยไม่สั่ง sudo ipsec down CON_NAME 
  • เปิดเครื่องใหม่สั่ง sudo ipsecc up CON_NAME แล้ว
2026-04-05T10:03:47.597027+07:00 Inspiron-5458 charon: 03[NET] no socket implementation registered, sending failed

2026-04-05T10:03:54.797559+07:00 Inspiron-5458 charon: 16[IKE] sending retransmit 2 of request message ID 0, seq 1

2026-04-05T10:03:54.798356+07:00 Inspiron-5458 charon: 16[NET] sending packet: from 192.168.1.86 to 122.154.130.253[500] (560 bytes)

2026-04-05T10:03:54.798599+07:00 Inspiron-5458 charon: 03[NET] no socket implementation registered, sending failed

  • เชื่อมต่อ VPN ไม่ได้ ลูกพี่บอกว่า มัน มี service ที่รันอยู่แล้วเพราะไม่สั่ง down ก่อนหน้า เลยพยายามเปิด socket ซ้ำซ้อน

1. แก้ไขปัญหาเฉพาะหน้า (เพื่อให้รันได้ทันที) อันนี้ลองแล้วใช้ได้คับ

  • สั่งหยุดและเคลียร์ Service ที่ค้างอยู่ แล้วเริ่มระบบใหม่แบบสะอาดๆ ครับ:

sudo systemctl stop strongswan
sudo systemctl stop strongswan-starter
sudo ipsec restart
sudo ipsec up CON_NAME

2. วิธีแก้ปัญหาถาวร (ป้องกันไม่ให้เกิดอีกหลัง Reboot) อันนี้ลอง ไม่ down แล้วปิดและเปิดใหม่ สามารถ สั่ง up ได้ปกติ

ใน Ubuntu 24.04 แพ็กเกจ strongswan จะพยายามรัน charon-systemd (แบบใหม่) ผ่าน systemd โดยอัตโนมัติ ซึ่งมันไปตีกับ strongswan-starter (แบบเก่าที่คุณใช้คอนฟิก ipsec.conf) ให้คุณปิดตัวที่ก่อปัญหาทิ้งไปครับ:

  1. Disable Service แบบใหม่:

    sudo systemctl disable strongswan && sudo systemctl stop strongswan
  2. ตั้งค่าให้ Service แบบเก่ารันตอนบูตแทน:

    sudo systemctl enable strongswan-starter

สาเหตุที่เกิดขึ้นจาก Log ของคุณ

  • "initiating Aggressive Mode": ระบบพยายามเริ่มเชื่อมต่อตามคอนฟิกที่คุณตั้งไว้ได้ถูกต้องแล้ว

  • "no socket implementation registered": ตัว Daemon (charon) บูตขึ้นมาสมบูรณ์แต่ปลั๊กอินสำหรับสร้าง Network Socket ไม่ทำงาน เนื่องจากมีการรัน Service ซ้อนกัน ทำให้ปลั๊กอินถูกแย่งใช้งานหรือโหลดไม่สำเร็จครับ

ข้อแนะนำเพิ่มเติม

หากคุณต้องใช้ VPN นี้บ่อยๆ และไม่อยากพิมพ์คำสั่งทุกครั้งที่เปิดเครื่อง คุณสามารถเปลี่ยนค่าใน /etc/ipsec.conf จาก:

  • auto=add เป็น auto=start เพื่อให้ระบบพยายามเชื่อมต่อ VPN ให้ทันทีที่บูตเครื่องและมีอินเทอร์เน็ตครับ

  • หากต้องการเปลี่ยนชื่อ หรือ เพิ่ม connection vpn ก็เข้าไปแก้ไฟล์

sudo nanao /etc/ipsec.conf 

  • เมื่อแก้ไขหรือเพิ่ม connection vpn อันใหม่แล้ว restart ipsec และจะใช้ชื่อ connection ใหม่ได้

sudo ipsec restart && sudo ipsec up connection_new

  • เราสามารถตรวจสอบ สถานะต่างๆ แล ip vpn ด้วยคำสั่ง

sudo ipsec statusall

  • หรือ คำสั่ง 

ip addr show

No comments:

Post a Comment

Popular Posts