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

๐Ÿ” Linux Firewalld / iptables / nftables:ไธ‰ๅคง้˜ฒ็ซ็‰†ๆ•ดๅˆ่ˆ‡ๆœ€ไฝณๅฏฆๅ‹™ๅฎŒๆ•ดๆŒ‡ๅ—

    ๐Ÿ” Linux Firewalld / iptables / nftables:ไธ‰ๅคง้˜ฒ็ซ็‰†ๆ•ดๅˆ่ˆ‡ๆœ€ไฝณๅฏฆๅ‹™ๅฎŒๆ•ดๆŒ‡ๅ—

    Linux ็š„้˜ฒ็ซ็‰†ๆŠ€่ก“ๅพžๆœ€ๆ—ฉๆœŸ็š„ iptables,ๆผ”้€ฒๅˆฐไฝฟ็”จ nftables ไฝœ็‚บ็ตฑไธ€ๆžถๆง‹, ๅ†ๅˆฐ็พไปฃ็ณป็ตฑๆ™ฎ้ไฝฟ็”จ็š„ Firewalld ไฝœ็‚บ้ซ˜้šŽ็ฎก็†ๅทฅๅ…ท。 ้€™ไธ‰่€…ๅธธ่ฎ“ไบบๆžๆทท:「ๅˆฐๅบ•่ชฐๆ˜ฏไธ‹ไธ€ไปฃ?่ชฐๅ–ไปฃ่ชฐ?ๆ˜ฏๅฆ่ƒฝๅŒๆ™‚ไฝฟ็”จ?」

    ๆœฌๆŒ‡ๅ—ๅฐ‡็ณป็ตฑๆ€ง่งฃๆง‹ไธ‰ๅคง้˜ฒ็ซ็‰†็š„ๅทฎ็•ฐ、ๆผ”้€ฒ้—œไฟ‚、่จญๅฎšๆ–นๆณ•่ˆ‡ไผๆฅญ็ดšๆœ€ไฝณๅฏฆๅ‹™。 ๆ–‡็ซ ๅŒ…ๅซๆŒ‡ไปค็คบไพ‹、ๆžถๆง‹ๅœ–、ๆŽ’้Œฏๆ–นๅผ่ˆ‡ๅปบ่ญฐ้ƒจ็ฝฒๆ–นๅผ,ๅฏ็›ดๆŽฅไฝœ็‚บ่ฆๅŠƒ้˜ฒ็ซ็‰†็ญ–็•ฅ็š„ๅƒ่€ƒๆ–‡ไปถ。


    ๐Ÿ“Œ ไธ€、็ธฝ่ฆฝ:ไธ‰ๅคง้˜ฒ็ซ็‰†็š„ๅฎšไฝๅทฎ็•ฐ

    ้ …็›ฎ iptables nftables Firewalld
    ้กžๅž‹ ๅ‚ณ็ตฑ้˜ฒ็ซ็‰†ๆก†ๆžถ ๆ–ฐไธ€ไปฃ้˜ฒ็ซ็‰†ๆก†ๆžถ ็ฎก็†ๅทฅๅ…ท(ไป‹้ข)
    ๅพŒ็ซฏๆŠ€่ก“ iptables nftables ๅฏไฝฟ็”จ iptables ๆˆ– nftables(ๆ–ฐ็ณป็ตฑ้ ่จญ nft)
    ไฝฟ็”จๆŒ‡ไปค iptables / iptables-save nft firewall-cmd / firewall-config
    ๅ‹•ๆ…‹ไฟฎๆ”น ไธๆ”ฏๆด(ๆœƒ้‡่ผ‰) ๆ”ฏๆด ๆ”ฏๆด
    ่ค‡้›œๅบฆ ้ซ˜ ไธญ ไฝŽ(Zone + Service)

    ๆ ธๅฟƒ้‡้ปž:Firewalld ≠ iptables,ไนŸ ≠ nftables。
    Firewalld ๆ˜ฏ「ๆŽงๅˆถๅฐ」,ๅบ•ๅฑคไปๆ˜ฏ iptables ๆˆ– nftables。


    ๐Ÿ“š ไบŒ、ไธ‰่€…็š„ๆผ”้€ฒ้—œไฟ‚(็ฐกๅฒ)

    iptables(ๅ‚ณ็ตฑๆก†ๆžถ)
           │
           │  ← ็›ธๅฎนๅฑค(iptables-nft)
           ▼
    nftables(ไธ‹ไธ€ไปฃๆก†ๆžถ)
           │
           └─ Firewalld(้ซ˜้šŽ็ฎก็†ๅฑค)
    
    • RHEL / Rocky / CentOS Stream 8 ไน‹ๅพŒ:Firewalld ้ ่จญไฝฟ็”จ nft。
    • Ubuntu 20.04 ่ตท้€ๆญฅๅˆ‡ๆ›,ไฝ†ไป็•™็›ธๅฎนๅฑค。
    • iptables ไป่ƒฝ็”จ,ไฝ†ๅทฒๅฑฌ legacy。

    ๐Ÿงช ไธ‰、ๆŸฅ็œ‹็›ฎๅ‰็ณป็ตฑไฝฟ็”จๅ“ชไธ€็จฎ้˜ฒ็ซ็‰†ๆก†ๆžถ

    1. Firewalld ๆ˜ฏๅฆไฝฟ็”จ nft?

    firewall-cmd --info-backend

    2. ๆŸฅ็œ‹ nftables ๆ˜ฏๅฆๅœจ้‹ไฝœ

    nft list ruleset

    3. ๆŸฅ็œ‹ๆ˜ฏๅฆไฝฟ็”จ iptables-nft ็›ธๅฎนๅฑค

    iptables -V
    iptables v1.8.x (nf_tables)

    4. ่‹ฅ็œ‹ๅˆฐ legacy,่กจ็คบ้‚„ๅœจ็”จ่ˆŠๆžถๆง‹

    iptables -V
    iptables v1.8.x (legacy)

    ๐Ÿ”ฅ ๅ››、Firewalld:Zone + Service ็š„็พไปฃ้˜ฒ็ซ็‰†ๆ€็ถญ

    Firewalld ็š„ๆ ธๅฟƒๆฆ‚ๅฟตๆ˜ฏ Zone(ไฟกไปป็ดšๅˆฅ),ไธๅ†ๆ˜ฏๆ‰‹ๅ‹•ๆ–ฐๅขž Chain。

    1. ๆŸฅ็œ‹ๆ‰€ๆœ‰ Zone

    firewall-cmd --get-zones

    2. ๆŸฅ็œ‹็•ถๅ‰ไฝฟ็”จ็š„ Zone

    firewall-cmd --get-active-zones

    3. ๅ•Ÿ็”จๅธธ็”จๆœๅ‹™(ไพ‹ๅฆ‚ SSH、HTTP)

    firewall-cmd --add-service=ssh --permanent
    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload

    4. ้–‹ Port

    firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd --reload

    5. ๅŠ ๅ…ฅไพ†ๆบ IP ้™ๅˆถ

    firewall-cmd --permanent --zone=public --add-rich-rule \
    'rule family="ipv4" source address="1.2.3.4" port port="22" protocol="tcp" accept'

    Firewalld ็š„ Rich Rule ๅŠŸ่ƒฝๆฅตๅผท,็ญ‰ๅŒๆ–ผ้ซ˜้šŽ็š„ iptables ๆŒ‡ไปค。


    ⚙️ ไบ”、iptables:ๅ‚ณ็ตฑ้˜ฒ็ซ็‰†(ไปๆœ‰้ƒจๅˆ†ๆ‡‰็”จไพ่ณด)

    ่ˆŠ็ณป็ตฑไปๅคง้‡ไฝฟ็”จ iptables(ไพ‹ๅฆ‚่ˆŠ็‰ˆๅฎนๅ™จ、Legacy ๆ‡‰็”จ)。

    1. ๆŸฅ็œ‹่ฆๅ‰‡

    iptables -L -n -v

    2. ้–‹ Port

    iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

    3. ๅ„ฒๅญ˜่ฆๅ‰‡

    iptables-save > /etc/iptables.rules

    4. ๆขๅพฉ่ฆๅ‰‡

    iptables-restore < /etc/iptables.rules

    ⚡ ๅ…ญ、nftables:็ตฑไธ€ไธ”็พไปฃๅŒ–็š„้˜ฒ็ซ็‰†ๆก†ๆžถ

    nftables ๆ˜ฏๆœชไพ†ไธปๆต,่ชžๆณ•ๆ›ด็ฐกๆฝ”、ๆ•ˆ่ƒฝๆ›ดๅฅฝ。

    1. ๆŸฅ็œ‹ๆ‰€ๆœ‰่ฆๅ‰‡

    nft list ruleset

    2. ๅปบ็ซ‹ไธ€็ต„ๅŸบๆœฌ้˜ฒ็ซ็‰†่จญๅฎš

    table inet filter {
        chain input {
            type filter hook input priority 0;
    
            ct state established,related accept
            iif lo accept
            tcp dport 22 accept
            tcp dport 80 accept
            tcp dport 443 accept
    
            counter drop
        }
    }

    3. ๅฅ—็”จ

    nft -f /etc/nftables.conf

    4. ้–‹ๆฉŸๅฅ—็”จ

    systemctl enable nftables

    ๐Ÿ” ไธƒ、้ฟๅ…ๆทท็”จ:iptables + nftables ๅ…ฑๅญ˜ๆ™‚็š„้ขจ้šช

    ๅœจ RHEL / Rocky / Ubuntu ๆ–ฐ็‰ˆ็ณป็ตฑไธญ,ๆœƒ็œ‹ๅˆฐ:

    • /usr/sbin/iptables ๆŒ‡ๅ‘ nft ็›ธๅฎนๅฑค。
    • /usr/sbin/iptables-legacy ๅ‰‡ๆ˜ฏๅฎŒๅ…จ่ˆŠๆก†ๆžถ。

    ๆทท็”จ้ขจ้šช:

    • ๅ…ฉ่€…่ฆๅ‰‡ๅŒๆญฅๅ›ฐ้›ฃ。
    • iptables ๆŒ‡ไปคๅฏฆ้š›ๅฏซๅ…ฅ็š„ๆ˜ฏ nft,ไธๅฎนๆ˜“่ฟฝ่นค。
    • ๆŸไบ›ๆ‡‰็”จ(Docker、Kubernetes)ๅฏ่ƒฝไฝฟ็”จไธๅŒ็š„ๅฑค。

    ๆœ€ไฝณๅฏฆๅ‹™:

    ๐Ÿ‘‰ ่‹ฅไฝฟ็”จ Firewalld,ๅฐฑๅ…จ้ƒจ็”ฑ Firewalld ็ฎก็†。
    ๐Ÿ‘‰ ่‹ฅๆ‰‹ๅ‹•็ฎก็†,้ธๆ“‡ nft,ไธ่ฆๅ†ๆ–ฐๅขž iptables ่ฆๅ‰‡。
    ๐Ÿ‘‰ ่‹ฅๆ‡‰็”จไพ่ณด iptables(ๅฆ‚่€่ˆŠ VPN),ๅ‰‡็ตฑไธ€ไฝฟ็”จ iptables-legacy。


    ๐Ÿ›ก ๅ…ซ、ไผๆฅญ็ดšๆœ€ไฝณๅฏฆๅ‹™(้‡้ปž)

    1. ็ตฑไธ€ๅทฅๅ…ท:ไธ่ฆๆทท็”จ iptables + nft + Firewalld。
    2. ็‰ˆๆœฌๆŽง็ฎก:ไฝฟ็”จ firewall-cmd --permanent ๆˆ– nft -f ็ดๅ…ฅ Git。
    3. ๅˆ†ๅฑค็ญ–็•ฅ:Host Firewall(Firewalld/nft) + Network Firewall(FortiGate/Palo Alto)。
    4. ๆญ้… systemd:็ขบไฟ้˜ฒ็ซ็‰†ๆ–ผ boot early ๅ•Ÿๅ‹•。
    5. ้˜ปๆ“‹็„กไพ†ๆบ็š„ INPUT:ๆŽก้ ่จญ DROP。
    6. ๅ…่จฑ outbound:OUTPUT ้€šๅธธๅ…่จฑ,ไฝ†่ฆๅฏฉๆ ธๆ•ๆ„Ÿๆœๅ‹™。

    ๐Ÿฉน ไน、ๅธธ่ฆ‹้Œฏ่ชคๆŽ’ๆŸฅ

    • Firewalld reload ๆ–ท็ทš:ไฝฟ็”จ --add-service/port ไธๆœƒไธญๆ–ท,้ฟๅ…ๆ‰‹ๅ‹•ไฟฎๆ”น Zone XML。
    • nft ไธ็”Ÿๆ•ˆ:็ขบ่ชๆœ‰ๅฅ—็”จ nft -f ไธฆๅ•Ÿ็”จ systemd ๆœๅ‹™。
    • iptables ็”Ÿๆ•ˆ้ †ๅบๆ€ช็•ฐ:ๅฏ่ƒฝๆทท็”จ legacy ่ˆ‡ nft ็›ธๅฎนๅฑค。
    • Docker ่ฆ†่“‹่ฆๅ‰‡:Docker ๆœƒ่‡ชๅ‹•ๅปบ็ซ‹ iptables chain,ๅปบ่ญฐๅœจๅ…ถๅพŒ่ฟฝๅŠ ่ฆๅ‰‡。

    ๐Ÿ’ฌ ไบ’ๅ‹•็•™่จ€ๅผ•ๅฐŽ(้˜ฒ็ซ็‰†ๅฏฆๆˆฐ่จŽ่ซ–ๅ€)

    ่‹ฅไฝ ๅœจ Firewalld / iptables / nftables ็š„ไฝˆ็ฝฒๆˆ–ๆŽ’้Œฏ้‡ๅˆฐๅ•้กŒ,ไพ‹ๅฆ‚:

    • ่ฆๅ‰‡ๆทท็”จไธ็”Ÿๆ•ˆ
    • ไฝฟ็”จ Docker / Kubernetes ๅพŒ่ฆๅ‰‡ๆ€ช็•ฐ
    • nftables ๅฅ—็”จๅพŒไธ่ตทไฝœ็”จ
    • ็ณป็ตฑๅ‡็ดšๅพŒ้˜ฒ็ซ็‰†ๆก†ๆžถ่ขซๅˆ‡ๆ›

    ๆญก่ฟŽ็•™่จ€ไฝ ็š„็ณป็ตฑ็‰ˆๆœฌ、ๆŒ‡ไปค่ผธๅ‡บ่ˆ‡ๆ‹“ๆจธ,ๆˆ‘ๆœƒๅ”ๅŠฉๅˆ†ๆžไธฆๆ•ด็†ๆˆ่ฃœๅ……็ฏ‡ๆ›ดๆ–ฐๅˆฐๆœฌๆ–‡。


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

    — WWFandy・Linux Firewall Notes

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

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

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

    ๅญ—็ดš