็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿ” FortiGate ่‡ชๅ‹•ๅŒ–ๅ‚™ไปฝ + ็‰ˆๆœฌๆฏ”ๅฐๅฏฆๆˆฐ:ๆŽ’็จ‹、CLI、ๅทฎ็•ฐๆชขๆŸฅๅฎŒๆ•ดๆŒ‡ๅ—

    ๐Ÿ” FortiGate ่‡ชๅ‹•ๅŒ–ๅ‚™ไปฝ + ็‰ˆๆœฌๆฏ”ๅฐๅฏฆๆˆฐ:ๆŽ’็จ‹、CLI、ๅทฎ็•ฐๆชขๆŸฅๅฎŒๆ•ดๆŒ‡ๅ—

    ๅœจไผๆฅญ็’ฐๅขƒไธญ,FortiGate ๆ‰ฎๆผ”็š„ๆ˜ฏๆ•ดๅ€‹็ถฒ่ทฏๅ‡บๅ…ฅๅฃ่ˆ‡ Gateway ๅฎ‰ๅ…จๆ ธๅฟƒ, ไปปไฝ•ไธ€ๆข Policy、่ทฏ็”ฑ、็‰ฉไปถๆˆ– VPN ่จญๅฎšๆ”น้Œฏ,้ƒฝๅฏ่ƒฝ็›ดๆŽฅๅฝฑ้Ÿฟๆ•ดๅ€‹ๅ…ฌๅธไธŠ็ถฒ่ˆ‡ๆœๅ‹™ๅญ˜ๆดป。

    ๅฆ‚ๆžœ้€™ไบ›่จญๅฎšๆฒ’ๆœ‰ๅšๅฅฝ「ๅฎšๆœŸๅ‚™ไปฝ + ็‰ˆๆœฌๅทฎ็•ฐๆฏ”ๅฐ」,็•ถๆŸๅคฉๅ‡บ็พ้€ฃ็ทš็•ฐๅธธๆˆ–ๅฎ‰ๅ…จไบ‹ไปถ, ๆƒณๅ›ž้ ญๆ‰พ「ๅˆฐๅบ•ๆ˜ฏ่ชฐ、ๅœจไป€้บผๆ™‚ๅ€™ๆ”นไบ†ไป€้บผ」ๅฐฑๆœƒ้žๅธธ็—›่‹ฆ。

    ๆœฌๆ–‡ๆœƒๅฏฆไฝœไธ€ๅฅ—ๅฏ่ฝๅœฐ็š„ๆต็จ‹:ๅˆฉ็”จ FortiGate CLI ๅŒฏๅ‡บ่จญๅฎšๆช”, ๅ†ๆญ้… Linux ็ฎก็†ไธปๆฉŸ + ๆŽ’็จ‹ + git ่‡ชๅ‹•ๅŒ–ๅ‚™ไปฝ,ไธฆ็”จ Diff ๅทฅๅ…ทๆชขๆŸฅๅทฎ็•ฐ, ่ฎ“ FortiGate ่จญๅฎšไนŸ่ƒฝไบซๅ—้กžไผผ「็จ‹ๅผ็ขผ็‰ˆๆœฌๆŽงๅˆถ」็š„็ฎก็†ๆ–นๅผ。


    ๐Ÿ“Œ ไธ€、ๆ•ด้ซ”ๆžถๆง‹่ˆ‡่จญ่จˆๆ€่ทฏ

    ๅ…ˆ็”จไธ€ๅผต็ฐกๅŒ–ๆžถๆง‹ๅœ–่ชชๆ˜Žๆต็จ‹:

              ┌──────────────────────────────┐
              │      Linux ็ฎก็†ไธปๆฉŸ(Backup) │
              │  - ssh key ็™ปๅ…ฅ FortiGate     │
              │  - ๆŽ’็จ‹ๅ‚™ไปฝ(cron / systemd) │
              │  - git ็ฎก็†็‰ˆๆœฌ + Diff        │
              └───────────▲──────────────────┘
                          │
              ssh / scp   │
                          │
                  ┌───────┴────────┐
                  │ FortiGate ้˜ฒ็ซ็‰† │
                  │  - CLI ๅทฒ้–‹ๅ•Ÿ    │
                  │  - ็ฎก็†ๅธณ่™Ÿ       │
                  └─────────────────┘

    ๅฏฆไฝœ็›ฎๆจ™:

    • ๆฏๅคฉ่‡ชๅ‹•ๆŠ“ไธ€ไปฝ่จญๅฎšๆช”ๅ›ž็ฎก็†ไธปๆฉŸ。
    • ไพๆ—ฅๆœŸๅ‘ฝๅ่ˆ‡ๆ”พ้€ฒ git repository ไธญ็ฎก็†。
    • ้€้Ž git diff / VS Code / Beyond Compare ็ญ‰ๅทฅๅ…ทๆชขๆŸฅๅทฎ็•ฐ。
    • ๅฟ…่ฆๆ™‚ๅฏๅฟซ้€Ÿ้‚„ๅŽŸๅˆฐๆญทๅฒ็‰ˆๆœฌ่จญๅฎš(ๆ‰‹ๅ‹•ๆˆ–ๅŠ่‡ชๅ‹•)。

    ๐Ÿงฐ ไบŒ、FortiGate CLI ่จญๅฎšๅ‚™ไปฝๆ–นๅผ็ธฝ่ฆฝ

    FortiGate ๆœฌ่บซๆ”ฏๆดๅคš็จฎๅ‚™ไปฝๆ–นๅผ:

    • Web GUI:ๆ‰‹ๅ‹•ไธ‹่ผ‰่จญๅฎšๆช”(ๅŠ ๅฏ† / ๆœชๅŠ ๅฏ†)。
    • CLI:execute backup config ... ๅ‚™ไปฝๅˆฐ TFTP / FTP / SCP / USB。
    • ้กฏ็คบ่จญๅฎš:show full-configuration,ๅฏ็›ดๆŽฅ็•ถ็ด”ๆ–‡ๅญ—็‰ˆๆœฌไฝฟ็”จ。
    • ๆ–ฐ็‰ˆๅฏๆญ้… Automation / Script,ไฝ†ไปๅปบ่ญฐ็”ฑๅค–้ƒจ็ฎก็†ไธปๆฉŸ็ตฑไธ€ๆŽง็ฎก。

    ๆœฌๆ–‡ไธป่ปธๆœƒไฝฟ็”จ:

    • ๆ–นๅผ A:Linux ็ฎก็†ไธปๆฉŸไปฅ SSH ็™ปๅ…ฅ FortiGate,ๅŸท่กŒ show full-configuration,ๅฐ‡่ผธๅ‡บๅฐŽๅ…ฅๆช”ๆกˆ。
    • ๆ–นๅผ B:ๅœจ FortiGate ไธŠๅŸท่กŒ execute backup config scp / TFTP,่‡ชๅ‹•ๆŽจๅ›ž็ฎก็†ไธปๆฉŸ。

    ๐Ÿ“ก ไธ‰、ๆ–นๅผ A:SSH + show full-configuration(ๆœ€็›ด่ฆบๅฅฝ Diff)

    1. ๅปบ็ซ‹ FortiGate ็ฎก็†ๅธณ่™Ÿ(ๅปบ่ญฐ)

    ๅœจ FortiGate CLI ไธญๅปบ็ซ‹ไธ€ๅ€‹ๅฐˆ็”จ็š„ๅ‚™ไปฝๅธณ่™Ÿ,ไพ‹ๅฆ‚ backup

    config system admin
        edit "backup"
            set accprofile "read-only"
            set vdom "root"
            set password <strong-password>
        next
    end

    ่‹ฅ้œ€่ฆๅŒฏๅ‡บๅฎŒๆ•ด่จญๅฎš(ๅŒ…ๅซๆ•ๆ„Ÿ่ณ‡่จŠ),ๆฌŠ้™ๅฏ่ฆ–ๆƒ…ๆณ่ชฟๆ•ด็‚บๆ›ด้ซ˜็ดšๅˆฅ,ไฝ†ๅปบ่ญฐๅƒ…้–‹ๅ•Ÿๅฟ…่ฆๆฌŠ้™,ไธฆ้™ๅˆถไพ†ๆบ IP。

    config system admin
        edit "backup"
            set trusthost1 10.0.10.0 255.255.255.0
        next
    end

    2. ๅœจ Linux ็ฎก็†ไธปๆฉŸ็”ข็”Ÿ SSH ้‡‘้‘ฐไธฆ่ค‡่ฃฝๅˆฐ FortiGate

    # ็ฎก็†ไธปๆฉŸ็”ข็”Ÿ้‡‘้‘ฐ
    ssh-keygen -t ed25519 -f ~/.ssh/fortigate_backup -C "fortigate-backup"
    
    # ๅฐ‡ public key ่ฒผๅˆฐ FortiGate ๅธณ่™Ÿ่จญๅฎšไธญ
    # (ๅฏๅœจ GUI > System > Administrators > backup > SSH public key)
      

    ่จญๅฎšๅฎŒๆˆๅพŒ,ๆธฌ่ฉฆๅพž็ฎก็†ไธปๆฉŸๅ…ๅฏ†็ขผ็™ปๅ…ฅ:

    ssh -i ~/.ssh/fortigate_backup backup@10.0.0.254

    3. ๆ’ฐๅฏซๅ‚™ไปฝ่…ณๆœฌ:ๆŠ“ๅ–ๅฎŒๆ•ด่จญๅฎšไธฆไธŸ้€ฒ git

    ๅœจ็ฎก็†ไธปๆฉŸๅปบ็ซ‹ไธ€ๅ€‹ๅฐˆ็”จ็›ฎ้Œ„,ไพ‹ๅฆ‚ /opt/fortigate-backup

    sudo mkdir -p /opt/fortigate-backup
    sudo chown $(whoami): /opt/fortigate-backup
    cd /opt/fortigate-backup
    git init

    ๅปบ็ซ‹ shell script,ไพ‹ๅฆ‚ backup_fgt.sh

    #!/bin/bash
    set -e
    
    FGT_HOST="10.0.0.254"
    FGT_USER="backup"
    SSH_KEY="$HOME/.ssh/fortigate_backup"
    TODAY=$(date +"%Y-%m-%d_%H%M")
    OUTDIR="/opt/fortigate-backup/configs"
    mkdir -p "$OUTDIR"
    
    OUTFILE="${OUTDIR}/fortigate_${FGT_HOST}_${TODAY}.conf"
    
    # 1) ้€้Ž SSH ๅŸท่กŒ show full-configuration
    ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no \
        ${FGT_USER}@${FGT_HOST} \
        'show full-configuration' > "$OUTFILE"
    
    # 2) ๅปบ็ซ‹/ๆ›ดๆ–ฐๆœ€ๆ–ฐ symlink ๆ–นไพฟๅฟซ้€ŸๆŸฅ็œ‹
    ln -sfn "$OUTFILE" "${OUTDIR}/fortigate_${FGT_HOST}_latest.conf"
    
    # 3) ๅŠ ๅ…ฅ git ็‰ˆๆœฌๆŽงๅˆถ
    cd /opt/fortigate-backup
    git add "$OUTFILE"
    git commit -m "Backup ${FGT_HOST} at ${TODAY}" || echo "No change to commit"
    

    ่จ˜ๅพ—็ตฆๅŸท่กŒๆฌŠ้™:

    chmod +x /opt/fortigate-backup/backup_fgt.sh

    4. ๅˆฉ็”จ cron ๆŽ’็จ‹ๆฏๆ—ฅๅ‚™ไปฝ

    crontab -e

    ๅŠ ๅ…ฅๆฏๅคฉๅ‡Œๆ™จ 03:10 ๅŸท่กŒไธ€ๆฌก:

    10 3 * * * /opt/fortigate-backup/backup_fgt.sh >/tmp/backup_fgt.log 2>&1

    ้€™ๆจฃๅฐฑๅฎŒๆˆ「ๆฏๅคฉๅพž FortiGate ๆ‹‰ไธ€ไปฝๅฎŒๆ•ด่จญๅฎš、ไธŸ้€ฒ git repository ่ฃก」็š„่‡ชๅ‹•ๅŒ–ๆต็จ‹。


    ๐Ÿ’พ ๅ››、ๆ–นๅผ B:FortiGate ่‡ชๅ‹•ๆŽจ้€่จญๅฎš(execute backup config ...)

    ๅฆไธ€็จฎๅšๆณ•ๆ˜ฏ่ฎ“ FortiGate ไธปๅ‹•ๆŠŠ่จญๅฎšๆŽจๅˆฐ TFTP / FTP / SCP ไธปๆฉŸ:

    1. CLI ๆ‰‹ๅ‹•ๅ‚™ไปฝๅˆฐ TFTP(็คบๆ„)

    execute backup config tftp FGT-01_$(get system time).conf 10.0.10.10

    ไธๅŒ FortiOS ็‰ˆๆœฌๆŒ‡ไปค็•ฅๆœ‰ๅทฎ็•ฐ,ๅธธ่ฆ‹ๆ ผๅผ็‚บ:

    • execute backup config tftp <filename> <server-ip>
    • execute backup config ftp <filename> <server-ip> <user> <password>
    • execute backup config scp <filename> <user>:<server-ip>:<path>(่ฆ–็‰ˆๆœฌๆ”ฏๆด)

    ๅฏฆๅ‹™ไธŠๅฏไปฅๆญ้… Script / Automation Profile ๅฎšๆœŸๅŸท่กŒ,ไธ้Žๅคšๆ•ธๆƒ…ๆณ้‚„ๆ˜ฏๅปบ่ญฐ็”ฑๅค–้ƒจ็ฎก็†ไธปๆฉŸ็ตฑไธ€ๆŽ’็จ‹่ˆ‡็‰ˆๆœฌๆŽง็ฎก,ๆฏ”่ผƒๅฅฝ้›†ไธญ็ฎก็†。


    ๐Ÿงช ไบ”、Diff:ๅฟซ้€Ÿๆ‰พๅ‡บ「่ชฐๆ”นไบ†ไป€้บผ」

    ๆœ‰ไบ†ๆฏๆ—ฅๅ‚™ไปฝๆช”ๅพŒ,ไธ‹ไธ€ๆญฅๅฐฑๆ˜ฏ「ๆฏ”่ผƒๅทฎ็•ฐ」。

    1. ไฝฟ็”จ git log / git diff

    cd /opt/fortigate-backup
    
    # ๆŸฅ็œ‹ๆญทๅฒๅ‚™ไปฝ็ด€้Œ„
    git log --oneline --graph
    
    # ๆฏ”่ผƒๆœ€่ฟ‘ๅ…ฉๆฌกๅ‚™ไปฝๅทฎ็•ฐ
    git diff HEAD~1 HEAD
    
    # ๆŒ‡ๅฎšๆŸๅ…ฉๅ€‹ๆ™‚้–“้ปž็š„ๅทฎ็•ฐ
    git diff <commit-id-1> <commit-id-2>
    

    ๆญ้… VS Code / Beyond Compare ็ญ‰ GUI ๅทฅๅ…ท,ๅฏไปฅๆ›ด็›ด่ฆบๅœฐ็œ‹ๅˆฐๆฏๆข policy、็‰ฉไปถ、่ทฏ็”ฑ็š„ๆ–ฐๅขž、ๅˆช้™ค่ˆ‡ไฟฎๆ”น。

    2. ็›ดๆŽฅ็”จ diff ๆฏ”่ผƒๅ…ฉๅ€‹ๆช”ๆกˆ

    diff -u fortigate_10.0.0.254_2025-12-01_0310.conf \
           fortigate_10.0.0.254_2025-12-03_0310.conf | less

    ไฝฟ็”จ -u ๆœƒ้กฏ็คบไธŠไธ‹ๆ–‡,ๆœ‰ๅˆฉๆ–ผ้–ฑ่ฎ€。


    ๐Ÿ›ก ๅ…ญ、ๅฎ‰ๅ…จๆ€ง่ˆ‡ๆฌŠ้™ๆŽง็ฎกๅปบ่ญฐ

    FortiGate ่จญๅฎšๆช”ไธญๅฏ่ƒฝๅŒ…ๅซ:

    • VPN ๅธณ่™Ÿๅฏ†็ขผ
    • ็ฎก็†ไป‹้ข่จญๅฎš
    • ๅ…ง้ƒจ็ถฒๆฎต็ตๆง‹่ˆ‡ๆ‹“ๆจธ

    ๅ› ๆญค,ๅฐๅ‚™ไปฝไธปๆฉŸ่ˆ‡ git repository ่ฆ็‰นๅˆฅๆณจๆ„:

    • ๅ‚™ไปฝ็›ฎ้Œ„ๆฌŠ้™้™ๅˆถ,ไพ‹ๅฆ‚ chmod 700 /opt/fortigate-backup
    • ่‹ฅๆŽจๅˆฐ้ ็ซฏ git server,ๅปบ่ญฐๆžถๅœจๅ…ง็ถฒๆˆ–็งๆœ‰ GitLab / Gitea,ไธ่ฆๅ…ฌ้–‹。
    • ๅฟ…่ฆๆ™‚ๅฏๅ†็”จ GPG ็ญ‰ๆ–นๅผๅŠ ๅฏ†่จญๅฎšๆช”,่งฃๅฏ†ๆฌŠ้™ๅƒ…้™ๅฐ‘ๆ•ธ็ฎก็†่€…。
    • ็ฎก็†ไธปๆฉŸๆœฌ่บซ้œ€ๅšๅฅฝ็กฌ็ขŸๅŠ ๅฏ†่ˆ‡็™ปๅ…ฅๆŽง็ฎก。

    ๐Ÿงฏ ไธƒ、้‚„ๅŽŸ(Restore)่ˆ‡ๅฏฆๅ‹™ๅปบ่ญฐ

    ๅ‚™ไปฝๅชๆ˜ฏ็ฌฌไธ€ๆญฅ,้—œ้ตๆ˜ฏ「็œŸ็š„่ƒฝ้‚„ๅŽŸ」。

    • ๅฎšๆœŸๅœจ Lab / ๆธฌ่ฉฆๆฉŸๅ™จไธŠๅฏฆ้š›ๆธฌ่ฉฆๅŒฏๅ…ฅ่จญๅฎšๆช”。
    • ้‡ๅˆฐ้‡ๅคง่ฎŠๆ›ด(ไพ‹ๅฆ‚ Gateway / Routing ๅคง่ชฟๆ•ด)ๅ‰,ๆ‰‹ๅ‹•ๅšไธ€ไปฝ้กๅค–ๅ‚™ไปฝไธฆๆจ™่จป。
    • ๅฆ‚ๆœ‰ๅคšๅฐ FortiGate(HQ + Branch),่จ˜ๅพ—ๅˆ†ๅˆฅๅปบ็ซ‹ไธๅŒๅญ็›ฎ้Œ„่ˆ‡ๅ‘ฝๅ่ฆๅ‰‡。

    ็ฐกๅ–ฎๅปบ่ญฐๅ‘ฝๅๆ–นๅผ:

    /opt/fortigate-backup/configs/
      ├── FGT-HQ_2025-12-03_0310.conf
      ├── FGT-BR1_2025-12-03_0310.conf
      └── FGT-DC_2025-12-03_0310.conf

    ้…ๅˆ git tag ่จป่จ˜้‡่ฆ็ฏ€้ปž,ไพ‹ๅฆ‚:

    git tag -a "before-dc-migration" -m "DC ็ถฒ่ทฏๆ”น็‰ˆๅ‰ๆœ€ๅพŒ็‰ˆๆœฌ"
    git push --tags

    ๐Ÿ“‹ ๅ…ซ、FortiGate ่จญๅฎšๅ‚™ไปฝ + Diff ๅฏฆไฝœ Checklist

    ✅ ๅœจ FortiGate ๅปบ็ซ‹ๅฐˆ็”จๅ‚™ไปฝๅธณ่™Ÿ(้™ๅˆถไพ†ๆบ IP)
    ✅ ๅœจ Linux ็ฎก็†ไธปๆฉŸๅปบ็ซ‹ SSH ้‡‘้‘ฐไธฆๆธฌ่ฉฆๅ…ๅฏ†็ขผ็™ปๅ…ฅ
    ✅ ๆ’ฐๅฏซ backup_fgt.sh ่‡ชๅ‹•ๆŠ“ๅ– show full-configuration
    ✅ ไปฅๆ—ฅๆœŸ่ˆ‡่จญๅ‚™ไปฃ่™Ÿๅ‘ฝๅๅ‚™ไปฝๆช”
    ✅ ไฝฟ็”จ git ็ฎก็†ๅ‚™ไปฝ็‰ˆๆœฌ(git add & commit)
    ✅ ่จญๅฎš cron / systemd timer ๆฏๆ—ฅๆŽ’็จ‹ๅŸท่กŒ
    ✅ ๅฎšๆœŸไฝฟ็”จ git diff / diff / GUI ๅทฅๅ…ทๆชขๆŸฅๅทฎ็•ฐ
    ✅ ็ขบ่ชๅ‚™ไปฝไธปๆฉŸ่ˆ‡ repository ๆฌŠ้™็ฎกๆŽงๅฎŒๅ–„
    ✅ ไธๅฎšๆœŸๅฏฆ้š›ๆธฌ่ฉฆ Restore ่ˆ‡้‚„ๅŽŸๆต็จ‹

    ๐Ÿ’ฌ ไบ’ๅ‹•็•™่จ€ๅผ•ๅฐŽ(FortiGate ๅ‚™ไปฝ / Diff ๅฏฆๆˆฐๅˆ†ไบซๅ€)

    ๅฆ‚ๆžœไฝ ๅœจๅฏฆไฝœ FortiGate ่‡ชๅ‹•ๅŒ–ๅ‚™ไปฝ、ๆŽ’็จ‹ๆˆ– Diff ็š„้Ž็จ‹ไธญ้‡ๅˆฐ:

    • SSH ้‡‘้‘ฐ็™ปๅ…ฅๅก้—œๆˆ–ไธ่ƒฝๅ…ๅฏ†็ขผ
    • show full-configuration ่ผธๅ‡บไธๅฎŒๆ•ดๆˆ–ไธญ้€”่ขซๆˆชๆ–ท
    • ๅคšๅฐ FortiGate ไธ็Ÿฅ้“ๅฆ‚ไฝ•่จญ่จˆๅ‘ฝๅ่ˆ‡็›ฎ้Œ„็ตๆง‹
    • ๆƒณๆŠŠๅ‚™ไปฝ่ˆ‡ๅ…ถไป–่จญๅ‚™(ไพ‹ๅฆ‚ Switch / Router)ไธ€่ตท็ฎก็†

    ๆญก่ฟŽๅœจไธ‹ๆ–น็•™่จ€ไฝ ็š„ FortiGate ๅž‹่™Ÿ、FortiOS ็‰ˆๆœฌ่ˆ‡็›ฎๅ‰ๅšๆณ•, ๆˆ‘ๆœƒๆŠŠๆœ‰ไปฃ่กจๆ€ง็š„ๆกˆไพ‹ๆ•ด็†ๆˆ่ฃœๅ……็ฏ‡ๆ›ดๆ–ฐๅœจๆœฌๆ–‡,่ฎ“้€™ๅฅ—ๅ‚™ไปฝ + Diff ๆต็จ‹ๆ›ดๅฎŒๆ•ด。


    ๐Ÿ”— ๅปถไผธ้–ฑ่ฎ€

    — WWFandy・FortiGate Backup & Diff Notes

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš