nftables เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ 0.9.1 เชฐเชฟเชฒเซ€เช

เชตเชฟเช•เชพเชธเชจเชพ เชเช• เชตเชฐเซเชท เชชเช›เซ€ เชชเซเชฐเชธเซเชคเซเชค เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ เชชเซเชฐเช•เชพเชถเชจ nftables 0.9.1, IPv6, IPv4, ARP เช…เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชฌเซเชฐเชฟเชœ เชฎเชพเชŸเซ‡ เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช— เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเซ€เชจเซ‡ iptables, ip6table, arptables เช…เชจเซ‡ ebtables เชฎเชพเชŸเซ‡ เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เชคเชฐเซ€เช•เซ‡ เชตเชฟเช•เชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‡. nftables เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚ เชฏเซเชเชฐ-เชธเซเชชเซ‡เชธ เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ เช˜เชŸเช•เซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เช•เชฐเซเชจเชฒ-เชธเซเชคเชฐเชจเซเช‚ เช•เชพเชฐเซเชฏ nf_tables เชธเชฌเชธเชฟเชธเซเชŸเชฎ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ 3.13 เชจเชพ เชชเซเชฐเช•เชพเชถเชจเชฅเซ€ Linux เช•เชฐเซเชจเชฒเชจเซ‹ เชญเชพเช— เช›เซ‡.

เช•เชฐเซเชจเชฒ เชธเซเชคเชฐ เชฎเชพเชคเซเชฐ เชเช• เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ-เชธเซเชตเชคเช‚เชคเซเชฐ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชชเซ‚เชฐเซเช‚ เชชเชพเชกเซ‡ เช›เซ‡ เชœเซ‡ เชชเซ‡เช•เซ‡เชŸเซ‹เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เช•เชพเชขเชตเชพ, เชกเซ‡เชŸเชพ เช“เชชเชฐเซ‡เชถเชจ เช•เชฐเชตเชพ เช…เชจเซ‡ เชซเซเชฒเซ‹ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชฎเชพเชŸเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เช•เชพเชฐเซเชฏเซ‹ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡.
เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช— เชฒเซ‹เชœเชฟเช• เชชเซ‹เชคเซ‡ เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ-เชตเชฟเชถเชฟเชทเซเชŸ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธ เชฏเซเชเชฐ เชธเซเชชเซ‡เชธเชฎเชพเช‚ เชฌเชพเชˆเชŸเช•เซ‹เชกเชฎเชพเช‚ เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเชฌเชพเชฆ เช† เชฌเชพเชˆเชŸเช•เซ‹เชก เชจเซ‡เชŸเชฒเชฟเช‚เช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ BPF (เชฌเชฐเซเช•เชฒเซ‡ เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐเซเชธ) เชจเซ€ เชฏเชพเชฆ เช…เชชเชพเชตเซ‡ เชคเซ‡เชตเชพ เชตเชฟเชถเชฟเชทเซเชŸ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎ เชคเชฎเชจเซ‡ เช•เชฐเซเชจเชฒ เชธเซเชคเชฐเซ‡ เชšเชพเชฒเชคเชพ เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช— เช•เซ‹เชกเชจเชพ เช•เชฆเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเชพ เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชจเชฟเชฏเชฎเซ‹ เช…เชจเซ‡ เชคเชฐเซเช•เชถเชพเชธเซเชคเซเชฐเชจเชพ เชคเชฎเชพเชฎ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชœเช—เซเชฏเชพเชฎเชพเช‚ เช–เชธเซ‡เชกเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชฎเซเช–เซเชฏ เชจเชตเซ€เชจเชคเชพเช“:

  • IPsec เชธเชชเซ‹เชฐเซเชŸ, เชชเซ‡เช•เซ‡เชŸ, IPsec เชตเชฟเชจเช‚เชคเซ€ ID เช…เชจเซ‡ SPI (เชธเชฟเช•เซเชฏเซ‹เชฐเชฟเชŸเซ€ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เช‡เชจเซเชกเซ‡เช•เซเชธ) เชŸเซ‡เช— เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชŸเชจเชฒ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‡ เชฎเซ‡เชš เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡,

    ... ipsec in ip sadr 192.168.1.0/24
    ... ipsec in spi 1-65536

    เช•เซ‹เชˆ เชฐเซ‚เชŸ IPsec เชŸเชจเชฒเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชคเชชเชพเชธเชตเซเช‚ เชชเชฃ เชถเช•เซเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, IPSec เชฆเซเชตเชพเชฐเชพ เชจเชนเซ€เช‚ เชŸเซเชฐเชพเชซเชฟเช•เชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡:

    โ€ฆ เชซเชฟเชฒเซเชŸเชฐ เช†เช‰เชŸเชชเซเชŸ rt ipsec เชกเซเชฐเซ‹เชช เช–เซ‚เชŸเซ‡ เช›เซ‡

  • IGMP (เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เช—เซเชฐเซเชช เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ) เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— IGMP เชœเซ‚เชฅ เชธเชญเซเชฏเชชเชฆ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพ เชฎเชพเชŸเซ‡ เชจเชฟเชฏเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹

    nft เช‰เชฎเซ‡เชฐเซ‹ เชจเชฟเชฏเชฎ netdev foo bar igmp เชชเซเชฐเช•เชพเชฐ เชธเชญเซเชฏเชชเชฆ-เช•เซเชตเซ‡เชฐเซ€ เช•เชพเช‰เชจเซเชŸเชฐ เชกเซเชฐเซ‹เชช

  • เชธเช‚เช•เซเชฐเชฎเชฃ เชธเชพเช‚เช•เชณเซ‹ (เชœเชฎเซเชช/เช—เซ‹เชŸเซ‹) เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพ เชšเชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพ. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡:

    dest = ber เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‹
    เชจเชฟเชฏเชฎ ip foo เชฌเชพเชฐ เชœเชฎเซเชช $dest เช‰เชฎเซ‡เชฐเซ‹

  • เชนเซ‡เชกเชฐเชฎเชพเช‚ TTL เชฎเซ‚เชฒเซเชฏเซ‹เชจเชพ เช†เชงเชพเชฐเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธ (OS เชซเชฟเช‚เช—เชฐเชชเซเชฐเชฟเชจเซเชŸ) เช“เชณเช–เชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชธเซเช• เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซเชฐเซ‡เชทเช• OS เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชชเซ‡เช•เซ‡เชŸเซ‹เชจเซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

    ... เชฎเซ‡เชŸเชพ เชฎเชพเชฐเซเช• เชธเซ‡เชŸ osf ttl เชธเซเช•เซ€เชช เชจเชพเชฎ เชจเช•เชถเซ‹ { "Linux" : 0x1,
    "เชตเชฟเชจเซเชกเซ‹เช": 0x2,
    "MacOS": 0x3,
    "เช…เชœเซเชžเชพเชค" : 0x0 }
    ... osf ttl เชธเซเช•เซ€เชช เชตเชฐเซเชเชจ "Linux:4.20"

  • เชชเซเชฐเซ‡เชทเช•เชจเชพ ARP เชธเชฐเชจเชพเชฎเซเช‚ เช…เชจเซ‡ เชฒเช•เซเชทเซเชฏ เชธเชฟเชธเซเชŸเชฎเชจเชพ IPv4 เชธเชฐเชจเชพเชฎเชพเชจเซ‡ เชฎเซ‡เชš เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, 192.168.2.1 เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐเชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ ARP เชชเซ‡เช•เซ‡เชŸเซ‹เชจเชพ เช•เชพเช‰เชจเซเชŸเชฐ เชตเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชจเชฟเชฏเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

    เชŸเซ‡เชฌเชฒ เชเช†เชฐเชชเซ€ x {
    เชธเชพเช‚เช•เชณ y {
    เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เช‡เชจเชชเซเชŸ เชชเซเชฐเชพเชฅเชฎเชฟเช•เชคเชพ เชซเชฟเชฒเซเชŸเชฐ; เชจเซ€เชคเชฟ เชธเซเชตเซ€เช•เชพเชฐเซ‹;
    arp saddr ip 192.168.2.1 เช•เชพเช‰เชจเซเชŸเชฐ เชชเซ‡เช•เซ‡เชŸเซเชธ 1 เชฌเชพเช‡เชŸเซเชธ 46
    }
    }

  • เชชเซเชฐเซ‹เช•เซเชธเซ€ (tproxy) เชฆเซเชตเชพเชฐเชพ เชตเชฟเชจเช‚เชคเซ€เช“เชจเชพ เชชเชพเชฐเชฆเชฐเซเชถเช• เชซเซ‹เชฐเชตเชฐเซเชกเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เซ‰เชฒเซเชธเชจเซ‡ เชชเซ‹เชฐเซเชŸ 80 เชชเชฐ เชชเซเชฐเซ‹เช•เซเชธเซ€ เชชเซ‹เชฐเซเชŸ 8080 เชชเชฐ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡:

    เช•เซ‹เชทเซเชŸเช• ip x {
    เชธเชพเช‚เช•เชณ y {
    เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เชชเซเชฐเซ€เชฐเซเชŸเซ€เช‚เช— เช…เช—เซเชฐเชคเชพ -150; เชจเซ€เชคเชฟ เชธเซเชตเซ€เช•เชพเชฐเซ‹;
    tcp dport 80 tproxy to :8080
    }
    }

  • SO_MARK เชฎเซ‹เชกเชฎเชพเช‚ setsockopt() เชฆเซเชตเชพเชฐเชพ เชธเซ‡เชŸ เชฎเชพเชฐเซเช•เชจเซ‡ เชตเชงเซ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡ เชฎเชพเชฐเซเช•เชฟเช‚เช— เชธเซ‹เช•เซ‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡:

    เชŸเซ‡เชฌเชฒ inet x {
    เชธเชพเช‚เช•เชณ y {
    เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เชชเซเชฐเซ€เชฐเซเชŸเซ€เช‚เช— เช…เช—เซเชฐเชคเชพ -150; เชจเซ€เชคเชฟ เชธเซเชตเซ€เช•เชพเชฐเซ‹;
    tcp dport 8080 เชฎเชพเชฐเซเช• เชธเซ‡เชŸ เชธเซ‹เช•เซ‡เชŸ เชฎเชพเชฐเซเช•
    }
    }

  • เชธเชพเช‚เช•เชณเซ‹ เชฎเชพเชŸเซ‡ เชชเซเชฐเชพเชงเชพเชจเซเชฏเชคเชพ เชฒเช–เชพเชฃ เชจเชพเชฎเซ‹ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชงเชพเชฐ. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡:

    nft เช‰เชฎเซ‡เชฐเซ‹ เชธเชพเช‚เช•เชณ ip x raw { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เชชเซเชฐเซ€เชฐเซ‹เชŸเซ€เช‚เช— เชชเซเชฐเชพเชฏเซ‹เชฐเชฟเชŸเซ€ เชฐเซ‹; }
    nft เชธเชพเช‚เช•เชณ เช‰เชฎเซ‡เชฐเซ‹ ip x เชซเชฟเชฒเซเชŸเชฐ { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เชชเซเชฐเซ€เชฐเซ‹เชŸเซ€เช‚เช— เชชเซเชฐเชพเชฏเซ‹เชฐเชฟเชŸเซ€ เชซเชฟเชฒเซเชŸเชฐ; }
    nft เชธเชพเช‚เช•เชณ เช‰เชฎเซ‡เชฐเซ‹ ip x filter_later { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เชชเซเชฐเซ€เชฐเซ‹เชŸเซ€เช‚เช— เชชเซเชฐเชพเชฏเซ‹เชฐเซ€เชŸเซ€ เชซเชฟเชฒเซเชŸเชฐ + 10; }

  • SELinux เชŸเซ…เช—เซเชธ (เชธเซ‡เช•เชฎเชพเชฐเซเช•) เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, SELinux เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ "sshtag" เชŸเซ‡เช—เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹:

    nft เชธเซ‡เช•เชฎเชพเชฐเซเช• เช‡เชจเซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ sshtag "system_u:object_r:ssh_server_packet_t:s0" เช‰เชฎเซ‡เชฐเซ‹

    เช…เชจเซ‡ เชชเช›เซ€ เชจเชฟเชฏเชฎเซ‹เชฎเชพเช‚ เช† เชฒเซ‡เชฌเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹:

    nft เช‰เชฎเซ‡เชฐเซ‹ เชจเชฟเชฏเชฎ inet เชซเชฟเชฒเซเชŸเชฐ เช‡เชจเชชเซเชŸ tcp dport 22 เชฎเซ‡เชŸเชพ เชธเซ‡เช•เชฎเชพเชฐเซเช• เชธเซ‡เชŸ โ€œsshtagโ€

    nft เช‰เชฎเซ‡เชฐเซ‹ เชฎเซ‡เชช เช‡เชจเซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ เชธเซ‡เช•เชฎเซ‡เชชเชฟเช‚เช— { เชชเซเชฐเช•เชพเชฐ inet_service : secmark; }
    nft เชเชฒเชฟเชฎเซ‡เชจเซเชŸ เช‡เชจเซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ เชธเซ‡เช•เชฎเซ‡เชชเชฟเช‚เช— เช‰เชฎเซ‡เชฐเซ‹ { 22 : "sshtag" }
    เชเชจเชเชซเชŸเซ€ เช‰เชฎเซ‡เชฐเซ‹ เชจเชฟเชฏเชฎ inet เชซเชฟเชฒเซเชŸเชฐ เช‡เชจเชชเซเชŸ เชฎเซ‡เชŸเชพ เชธเซ‡เช•เชฎเชพเชฐเซเช• เชธเซ‡เชŸ tcp dport เชฎเซ‡เชช @secmapping

  • เชŸเซ‡เช•เซเชธเซเชŸ เชซเซ‹เชฐเซเชฎเชฎเชพเช‚ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเซเชธเชจเซ‡ เชธเซ‹เช‚เชชเซ‡เชฒ เชชเซ‹เชฐเซเชŸเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ /etc/services เชซเชพเช‡เชฒเชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡:

    nft เช‰เชฎเซ‡เชฐเซ‹ เชจเชฟเชฏเชฎ xy tcp dport "ssh"
    nft เชฏเชพเชฆเซ€ เชจเชฟเชฏเชฎเซ‹ -l
    เชŸเซ‡เชฌเชฒ x {
    เชธเชพเช‚เช•เชณ y {
    ...
    tcp dport "ssh"
    }
    }

  • เชจเซ‡เชŸเชตเชฐเซเช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเชพ เชชเซเชฐเช•เชพเชฐเชจเซ‡ เชคเชชเชพเชธเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡:

    เชจเชฟเชฏเชฎ inet raw prerouting เชฎเซ‡เชŸเชพ iifkind "vrf" เชธเซเชตเซ€เช•เชพเชฐเซ‹ เช‰เชฎเซ‡เชฐเซ‹

  • "เชกเชพเชฏเชจเซ‡เชฎเชฟเช•" เชซเซเชฒเซ‡เช—เชจเซ‹ เชธเซเชชเชทเซเชŸ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เชจเซ‡ เชธเซ‡เชŸเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชงเชพเชฐเซ‡เชฒ เชธเชฎเชฐเซเชฅเชจ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซเชคเซเชฐเซ‹เชค เชธเชฐเชจเชพเชฎเซเช‚ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‡เชŸ "s" เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพ เช…เชจเซ‡ เชœเซ‹ เชคเซเชฏเชพเช‚ 30 เชธเซ‡เช•เชจเซเชก เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชชเซ‡เช•เซ‡เชŸ เชจ เชนเซ‹เชฏ เชคเซ‹ เชเชจเซเชŸเซเชฐเซ€ เชฐเซ€เชธเซ‡เชŸ เช•เชฐเซ‹:

    เช•เซ‹เชทเซเชŸเช• x เช‰เชฎเซ‡เชฐเซ‹
    เชธเซ‡เชŸ xs เช‰เชฎเซ‡เชฐเซ‹ { type ipv4_addr; เช•เชฆ 128; เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ 30s; เชงเซเชตเชœ เช—เชคเชฟเชถเซ€เชฒ; }
    เชธเชพเช‚เช•เชณ xy เช‰เชฎเซ‡เชฐเซ‹ { เชชเซเชฐเช•เชพเชฐ เชซเชฟเชฒเซเชŸเชฐ เชนเซ‚เช• เช‡เชจเชชเซเชŸ เชชเซเชฐเชพเชงเชพเชจเซเชฏเชคเชพ 0; }
    เชจเชฟเชฏเชฎ xy เช…เชชเชกเซ‡เชŸ @s { ip saddr } เช‰เชฎเซ‡เชฐเซ‹

  • เช…เชฒเช— เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ เชธเซเชฅเชฟเชคเชฟ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ‹เชฐเซเชŸ 8888 เชชเชฐ เช†เชตเชคเชพ เชชเซ‡เช•เซ‡เชŸเซ‹ เชฎเชพเชŸเซ‡ เชกเชฟเชซเซ‰เชฒเซเชŸ เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟเชจเซ‡ เช“เชตเชฐเชฐเชพเช‡เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

    เชŸเซ‡เชฌเชฒ เช†เชˆเชชเซ€ เชซเชฟเชฒเซเชŸเชฐ {
    ct เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ เช†เช•เซเชฐเชฎเช•-tcp {
    เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ tcp;
    l3proto ip;
    เชจเซ€เชคเชฟ = {เชธเซเชฅเชพเชชเชฟเชค: 100, เชฌเช‚เชง_เชชเซเชฐเชคเซ€เช•เซเชทเชพ: 4, เชฌเช‚เชง: 4}
    }
    เชธเชพเช‚เช•เชณ เช†เช‰เชŸเชชเซเชŸ {
    ...
    tcp dport 8888 ct เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ เชธเซ‡เชŸ "เช†เช•เซเชฐเชฎเช•-tcp"
    }
    }

  • เช‡เชจเซ‡เชŸ เชชเชฐเชฟเชตเชพเชฐ เชฎเชพเชŸเซ‡ NAT เชธเชชเซ‹เชฐเซเชŸ:

    เชŸเซ‡เชฌเชฒ เช‡เชจเซ‡เชŸ เชจเซ‡เชŸ {
    ...
    ip6 daddr dead::2::1 dnat to dead:2::99
    }

  • เชธเซเชงเชพเชฐเซ‡เชฒ เชŸเชพเช‡เชชเซ‹ เชญเซ‚เชฒ เชฐเชฟเชชเซ‹เชฐเซเชŸเชฟเช‚เช—:

    nft เชธเชพเช‚เช•เชณ เชซเชฟเชฒเซเชŸเชฐ เชŸเซ‡เชธเซเชŸ เช‰เชฎเซ‡เชฐเซ‹

    เชญเซ‚เชฒ: เช†เชตเซ€ เช•เซ‹เชˆ เชซเชพเช‡เชฒ เช…เชฅเชตเชพ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชจเชฅเซ€; เชถเซเช‚ เชคเชฎเชพเชฐเซ‹ เช…เชฐเซเชฅ เชซเซ‡เชฎเชฟเชฒเซ€ เช†เชˆเชชเซ€เชฎเชพเช‚ เชŸเซ‡เชฌเชฒ "เชซเชฟเชฒเซเชŸเชฐ" เช›เซ‡?
    เชธเชพเช‚เช•เชณ เชซเชฟเชฒเซเชŸเชฐ เชŸเซ‡เชธเซเชŸ เช‰เชฎเซ‡เชฐเซ‹
    ^^^^^^

  • เชธเซ‡เชŸเชฎเชพเช‚ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชจเชพเชฎเซ‹ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ:

    เชธเซ‡เชŸ เชเชธเชธเซ€ {
    inet_service เชŸเชพเชˆเชช เช•เชฐเซ‹. ifname
    เชคเชคเซเชตเซ‹ = { "ssh" . "eth0" }
    }

  • เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡เชฒ เชซเซเชฒเซ‹เชŸเซ‡เชฌเชฒ เชจเชฟเชฏเชฎเซ‹ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ:

    nft เช•เซ‹เชทเซเชŸเช• x เช‰เชฎเซ‡เชฐเซ‹
    nft เช‰เชฎเซ‡เชฐเซ‹ เชซเซเชฒเซ‹เชŸเซ‡เชฌเชฒ x ft { เชนเซ‚เช• เชชเซเชฐเชตเซ‡เชถ เช…เช—เซเชฐเชคเชพ 0; เช‰เชชเช•เชฐเชฃเซ‹ = { eth0, wlan0 }; }
    ...
    nft เช‰เชฎเซ‡เชฐเซ‹ เชจเชฟเชฏเชฎ x เชซเซ‹เชฐเชตเชฐเซเชก ip เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ { tcp, udp } เชชเซเชฐเชตเชพเชน เช‰เชฎเซ‡เชฐเซ‹ @ft

  • เชธเซเชงเชพเชฐเซ‡เชฒ JSON เชธเชชเซ‹เชฐเซเชŸ.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹