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

๐Ÿง Linux ้˜ฒ็ซ็‰†ๅฎŒๆ•ด่งฃๆž:iptables ่ˆ‡ nftables ๆžถๆง‹、่ฆๅ‰‡、ๅทฎ็•ฐ่ˆ‡ๆœ€ไฝณๅฏฆๅ‹™

    ๐Ÿง Linux ้˜ฒ็ซ็‰†ๅฎŒๆ•ด่งฃๆž:iptables ่ˆ‡ nftables ๆžถๆง‹、่ฆๅ‰‡、ๅทฎ็•ฐ่ˆ‡ๆœ€ไฝณๅฏฆๅ‹™

    Linux ้˜ฒ็ซ็‰†ๆ˜ฏ็ณป็ตฑ็ฎก็†่ˆ‡้›ฒ็ซฏๆžถๆง‹็š„ๆ ธๅฟƒๆŠ€่ƒฝไน‹ไธ€,่€Œ็พไปŠไธปๆตๆžถๆง‹ไพ็„ถๅˆ†ๆˆๅ…ฉๆดพ:

    • iptables:ๅ‚ณ็ตฑ้˜ฒ็ซ็‰†ๆก†ๆžถ,ๆฒฟ็”จๅคšๅนด
    • nftables:ๆ–ฐไธ€ไปฃ Netfilter ๅ‰็ซฏ,็พไปฃ Linux ๆจ™ๆบ–

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


    ๐Ÿงฉ ไธ€、Linux ้˜ฒ็ซ็‰†็š„ๅŸบ็คŽ:Netfilter ่ˆ‡ๅฐๅŒ…ๆต็จ‹

    ็„ก่ซ–ๆ˜ฏ iptables ๆˆ– nftables,ๅ…ถๆ ธๅฟƒ้ƒฝไพ่ณด Linux Kernel ็š„ Netfilter ๅญ็ณป็ตฑ。Netfilter ๆไพ›:

    • ๅฐๅŒ…้Žๆฟพ(Filtering)
    • NAT(Network Address Translation)
    • Port Forwarding
    • Connection Tracking(็‹€ๆ…‹่ฟฝ่นค)
    • Mangle(็‰นๆฎŠๅฐๅŒ…่™•็†)
    • Raw(็นž้Ž conntrack)

    ๐Ÿ”„ Linux ๅฐๅŒ…ๆต็จ‹(็คบๆ„ๅœ–)

    PREROUTING → INPUT → ๆ‡‰็”จ็จ‹ๅผ
                 ↓
    OUTPUT → POSTROUTING → ็ถฒ่ทฏไป‹้ข
    FORWARD(้œ€่ฝ‰็™ผๆ™‚)
    

    ๐Ÿงฑ ไบŒ、iptables ๆžถๆง‹่งฃๆž(ๅ‚ณ็ตฑ็ณป็ตฑ)

    iptables ๆ˜ฏ Linux ๆ—ฉๆœŸ็š„้˜ฒ็ซ็‰†ๅทฅๅ…ท,่ฆๅ‰‡ๅˆ†ๆ•ฃๆ–ผๅคšๅ€‹ Table/Chain。

    iptables Table ่ˆ‡ๅŠŸ่ƒฝ

    TableๅŠŸ่ƒฝ
    filterไธ€่ˆฌๅฐๅŒ…้Žๆฟพ(ไธป่ฆไฝฟ็”จ)
    natNAT、Port Forward
    mangle็‰นๆฎŠๅฐๅŒ…ไฟฎๆ”น
    rawไธ้€ฒ่กŒ conntrack

    ๅธธ่ฆ‹ Chain

    • INPUT
    • OUTPUT
    • FORWARD
    • PREROUTING
    • POSTROUTING

    ๐Ÿ”ฅ ไธ‰、nftables ๆžถๆง‹่งฃๆž(ๆ–ฐไธ–ไปฃ,ๅ–ไปฃ iptables)

    nftables ่‡ช Linux Kernel 3.13 ่ตทๅŠ ๅ…ฅ,ๆ˜ฏ่จญ่จˆ็ตฆๆœชไพ†็š„้ซ˜ๆ•ˆ้˜ฒ็ซ็‰†ๅทฅๅ…ท。

    ๐ŸŒŸ nftables ๅ„ชๅ‹ข

    • ๅ–ฎไธ€ๅทฅๅ…ทๅ–ไปฃ iptables/ip6tables/ebtables/arptables
    • Set/Map ๆๅ‡ๆ•ˆ็އ
    • IPv4/IPv6 ๅฏ้€้Ž inet table ๅŒๆ™‚็ฎก็†
    • ่ฆๅ‰‡ๆ›ดๆ–ฐไธไธญๆ–ท้€ฃ็ทš
    • ๆ•ˆ่ƒฝๆ›ดไฝณ

    nftables ๅŸบๆœฌ็ตๆง‹

    • Table
    • Chain
    • Rule
    • Set / Map
    table inet filter {
        chain input {
            type filter hook input priority 0;
            tcp dport 22 accept
            ip saddr { 1.1.1.1, 8.8.8.8 } drop
        }
    }
    

    ⚔️ ๅ››、iptables vs nftables ๅทฎ็•ฐ็ธฝ่กจ

    ็‰น่‰ฒiptablesnftables
    ๅทฅๅ…ทๆžถๆง‹ๅคš็ต„ๅทฅๅ…ทๅ–ฎไธ€ nft
    ๆ•ˆ่ƒฝไธญ้ซ˜
    IPv4/IPv6ๅˆ†้–‹ๆ•ดๅˆ inet table
    ๅคง้‡่ฆๅ‰‡่™•็†่ผƒๅผฑSet/Map ้ซ˜ๆ•ˆ
    ๆœชไพ†่ถจๅ‹ข่ขซๅ–ไปฃไธปๅŠ›

    ๐Ÿ›  ไบ”、iptables ๅฏฆๅ‹™ๆŒ‡ไปค

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

    iptables -L -n -v

    ๅ…่จฑ SSH

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

    ้˜ปๆ“‹ IP

    iptables -A INPUT -s 1.2.3.4 -j DROP

    NAT ่ˆ‡ Port Forward

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.100:80
    iptables -t nat -A POSTROUTING -j MASQUERADE
    

    ๐Ÿ›  ๅ…ญ、nftables ๅฏฆๅ‹™ๆŒ‡ไปค

    1️⃣ ๅปบ็ซ‹ Table / Chain

    nft add table inet filter
    nft add chain inet filter input { type filter hook input priority 0; }
    

    2️⃣ ๅ…่จฑ SSH

    nft add rule inet filter input tcp dport 22 accept

    3️⃣ ้˜ปๆ“‹ IP

    nft add rule inet filter input ip saddr 1.2.3.4 drop

    4️⃣ NAT

    nft add table ip nat
    nft add chain ip nat postrouting { type nat hook postrouting priority 100; }
    nft add rule ip nat postrouting oif "eth0" masquerade
    

    ๐Ÿ” ไธƒ、ๆœ€ไฝณๅฏฆๅ‹™(Production ็‰ˆ)

    • ้ ่จญ DROP → ้€ๆญฅ้–‹ๆ”พๅฟ…่ฆๆœๅ‹™
    • ๅ…่จฑๅ…ง็ถฒไพ†ๆบ,ๅฆ‚ 192.168.0.0/16
    • ๅ…่จฑ loopback
    • ๅ…่จฑๅทฒๅปบ็ซ‹้€ฃ็ทš:ct state established,related
    • ้™้€Ÿ้˜ฒๆญข SSH ็ˆ†็ ด:limit rate 3/minute
    • ้›†ไธญ็ด€้Œ„:journald / rsyslog / Loki
    • ๅปบ่ญฐไปฅ nftables ไฝœ็‚บ 2025 ไน‹ๅพŒ็š„ๆจ™ๆบ–

    ๐Ÿ“ ๅ…ซ、ๅฎŒๆ•ด nftables ้˜ฒ็ซ็‰†็ฏ„ๆœฌ(ๅฏ็›ดๆŽฅไฝฟ็”จ)

    table inet filter {
        chain input {
            type filter hook input priority 0;
    
            policy drop;
    
            iif lo accept;
            ct state established,related accept;
    
            tcp dport 22 accept;
    
            ip protocol icmp accept;
    
            drop
        }
    }
    

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


    ๐Ÿ’ฌ ็•™ไธ‹ไฝ ็š„่ง€้ปž,่ฎ“่จŽ่ซ–ๆ›ด็ฒพๅฝฉ!

    ไฝ ็š„็ถ“้ฉ—、็–‘ๅ•ๆˆ–ๆƒณๆณ•้ƒฝ่ƒฝ่ฎ“ๆœฌๆ–‡ๆ›ดๅฎŒๆ•ด,ๆญก่ฟŽๅœจไธ‹ๆ–น็•™่จ€ไบคๆต。

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

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

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

    ๅญ—็ดš