nftables рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ 0.9.1 рд░рд┐рд▓реАрдЬ

рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рдПрдХрд╛ рд╡рд░реНрд╖рд╛рдирдВрддрд░ рд╕рд╛рджрд░ рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рд░рд┐рд▓реАрдЭ nftables 0.9.1, IPv6, IPv4, ARP рдЖрдгрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдмреНрд░рд┐рдЬрд╕рд╛рдареА рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХрддреНрд░рд┐рдд рдХрд░реВрди iptables, ip6table, arptables рдЖрдгрд┐ ebtables рд╕рд╛рдареА рдмрджрд▓реА рдореНрд╣рдгреВрди рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдд рдЖрд╣реЗ. nftables рдкреЕрдХреЗрдЬрдордзреНрдпреЗ рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рдШрдЯрдХ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдЪрд╛рд▓рддрд╛рдд, рддрд░ рдХрд░реНрдирд▓-рд╕реНрддрд░реАрдп рдХрд╛рд░реНрдп nf_tables рдЙрдкрдкреНрд░рдгрд╛рд▓реАрджреНрд╡рд╛рд░реЗ рдкреБрд░рд╡рд▓реЗ рдЬрд╛рддреЗ, рдЬреЗ рд░рд┐рд▓реАрдЬ 3.13 рдкрд╛рд╕реВрди Linux рдХрд░реНрдирд▓рдЪрд╛ рднрд╛рдЧ рдЖрд╣реЗ.

рдХрд░реНрдирд▓ рд╕реНрддрд░ рдлрдХреНрдд рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рд╕реНрд╡рддрдВрддреНрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЛ рдЬреЛ рдкреЕрдХреЗрдЯреНрд╕рдордзреВрди рдбреЗрдЯрд╛ рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА, рдбреЗрдЯрд╛ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдгрд╛рд╕рд╛рдареА рдореВрд▓рднреВрдд рдХрд╛рд░реНрдпреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЛ.
рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рд╕реНрд╡рддрдГ рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рдБрдбрд▓рд░реНрд╕ рдпреБрдЬрд░ рд╕реНрдкреЗрд╕рдордзреАрд▓ рдмрд╛рдпрдЯреЗрдХреЛрдбрдордзреНрдпреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рддреНрдпрд╛рдирдВрддрд░ рд╣рд╛ рдмрд╛рдпрдХреЛрдб рдиреЗрдЯрд▓рд┐рдВрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рдкрд░реВрди рдХрд░реНрдирд▓рдордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ BPF (рдмрд░реНрдХрд▓реЗ рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░реНрд╕) рдЪреА рдЖрдард╡рдг рдХрд░реВрди рджреЗрдгрд╛рд░реНтАНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдордзреНрдпреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд░реНрдирд▓ рд╕реНрддрд░рд╛рд╡рд░ рдЪрд╛рд▓рдгрд╛рд░реНтАНрдпрд╛ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛрдбрдЪрд╛ рдЖрдХрд╛рд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдирд┐рдпрдо рдЖрдгрд┐ рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧрдЪреА рд╕рд░реНрд╡ рдХрд╛рд░реНрдпреЗ рд╣рд▓рд╡рд┐рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ.

рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛:

  • IPsec рд╕рдорд░реНрдерди, рдкреЕрдХреЗрдЯ, IPsec рд╡рд┐рдирдВрддреА рдЖрдпрдбреА рдЖрдгрд┐ SPI (рд╕реБрд░рдХреНрд╖рд╛ рдкреЕрд░рд╛рдореАрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕) рдЯреЕрдЧрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдмреЛрдЧрджреНрдпрд╛рдЪреНрдпрд╛ рдкрддреНрддреНрдпрд╛рдВрдЪреА рдЬреБрд│рдгреА рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде,

    ... ipsec рдордзреНрдпреЗ ip sadr 192.168.1.0/24
    ... ipsec in spi 1-65536

    рдорд╛рд░реНрдЧ IPsec рдмреЛрдЧрджреНрдпрд╛рдордзреВрди рдЬрд╛рддреЛ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреЗ рджреЗрдЦреАрд▓ рд╢рдХреНрдп рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, IPSec рдорд╛рд░реНрдЧреЗ рди рд░рд╣рджрд╛рд░реА рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА:

    тАж рдлрд┐рд▓реНрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ rt ipsec рдЧрд╣рд╛рд│ рдбреНрд░реЙрдк

  • IGMP (рдЗрдВрдЯрд░рдиреЗрдЯ рдЧреНрд░реБрдк рдореЕрдиреЗрдЬрдореЗрдВрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рд╕рд╛рдареА рд╕рдорд░реНрдерди. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рдпреЗрдгрд╛рд░реНтАНрдпрд╛ IGMP рдЧрдЯ рд╕рджрд╕реНрдпрддреНрд╡ рд╡рд┐рдирдВрддреНрдпрд╛ рдЯрд╛рдХреВрди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рдпрдо рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛

    nft рдЬреЛрдбрд╛ рдирд┐рдпрдо netdev foo рдмрд╛рд░ 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 рдкреЕрдХреЗрдЯреНрд╕рдЪреЗ рдХрд╛рдЙрдВрдЯрд░ рд╡рд╛рдврд╡рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдирд┐рдпрдо рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛:

    рдЯреЗрдмрд▓ 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 secmark inet рдлрд┐рд▓реНрдЯрд░ sshtag "system_u:object_r:ssh_server_packet_t:s0" рдЬреЛрдбрд╛

    рдЖрдгрд┐ рдирдВрддрд░ рд╣реЗ рд▓реЗрдмрд▓ рдирд┐рдпрдорд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рд╛:

    nft рдЬреЛрдбрд╛ рдирд┐рдпрдо inet рдлрд┐рд▓реНрдЯрд░ рдЗрдирдкреБрдЯ tcp dport 22 рдореЗрдЯрд╛ рд╕реЗрдХрдорд╛рд░реНрдХ рд╕реЗрдЯ "sshtag"

    рдПрдирдПрдлрдЯреА рдореЕрдк рдЗрдиреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рд╕реЗрдХрдореЕрдкрд┐рдВрдЧ рдЬреЛрдбрд╛ { рдкреНрд░рдХрд╛рд░ inet_service : secmark; }
    рдПрдирдПрдлрдЯреА рдНрдб рдПрд▓рд┐рдореЗрдВрдЯ рдЗрдиреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рд╕реЗрдХрдореЕрдкрд┐рдВрдЧ { 22 : "sshtag" }
    nft рдЬреЛрдбрд╛ рдирд┐рдпрдо inet рдлрд┐рд▓реНрдЯрд░ рдЗрдирдкреБрдЯ рдореЗрдЯрд╛ secmark рд╕реЗрдЯ tcp dport рдирдХрд╛рд╢рд╛ @secmapping

  • рдордЬрдХреВрд░ рд╕реНрд╡рд░реВрдкрд╛рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд▓рд╛ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗрд▓реЗ рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рдЬрд╕реЗ рдХреА рддреЗ /etc/services рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

    nft рдирд┐рдпрдо xy tcp dport "ssh" рдЬреЛрдбрд╛
    nft рдпрд╛рджреА рдирд┐рдпрдорд╕реЗрдЯ -l
    рдЯреЗрдмрд▓ x {
    рд╕рд╛рдЦрд│реА y {
    ...
    tcp dport "ssh"
    }
    }

  • рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕рдЪрд╛ рдкреНрд░рдХрд╛рд░ рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

    рдирд┐рдпрдо inet raw prerouting meta 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 рд╕рдорд░реНрдерди:

    рдЯреЗрдмрд▓ inet nat {
    ...
    ip6 daddr dead::2::1 dnat to dead:2::99
    }

  • рд╕реБрдзрд╛рд░рд┐рдд рдЯрд╛рдпрдкреЛ рддреНрд░реБрдЯреА рдЕрд╣рд╡рд╛рд▓:

    рдПрдирдПрдлрдЯреА рдНрдб рдЪреЗрди рдлрд┐рд▓реНрдЯрд░ рдЪрд╛рдЪрдгреА

    рддреНрд░реБрдЯреА: рдЕрд╢реА рдХреЛрдгрддреАрд╣реА рдлрд╛рдЗрд▓ рдХрд┐рдВрд╡рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рд╣реА; рддреБрдореНрд╣рд╛рд▓рд╛ рдлреЕрдорд┐рд▓реА рдЖрдпрдкреА рдордзреАрд▓ рдЯреЗрдмрд▓ "рдлрд┐рд▓реНрдЯрд░" рдореНрд╣рдгрд╛рдпрдЪреЗ рдЖрд╣реЗ рдХрд╛?
    рд╕рд╛рдЦрд│реА рдлрд┐рд▓реНрдЯрд░ рдЪрд╛рдЪрдгреА рдЬреЛрдбрд╛
    ^^^^^^

  • рд╕реЗрдЯрдордзреНрдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╛рд╡реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛:

    рд╕реЗрдЯ sc {
    inet_service рдЯрд╛рдЗрдк рдХрд░рд╛. ifname
    рдШрдЯрдХ = { "ssh" . "eth0" }
    }

  • рдЕрджреНрдпрддрдирд┐рдд рдлреНрд▓реЛрдЯреЗрдмрд▓ рдирд┐рдпрдо рд╡рд╛рдХреНрдпрд░рдЪрдирд╛:

    nft рдЯреЗрдмрд▓ x рдЬреЛрдбрд╛
    nft рдЬреЛрдбрд╛ рдлреНрд▓реЛрдЯреЗрдмрд▓ x рдлреВрдЯ { рд╣реБрдХ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рд╛рдзрд╛рдиреНрдп 0; рдЙрдкрдХрд░рдгреЗ = { eth0, wlan0 }; }
    ...
    nft рдЬреЛрдбрд╛ рдирд┐рдпрдо x рдлреЙрд░рд╡рд░реНрдб ip рдкреНрд░реЛрдЯреЛрдХреЙрд▓ { tcp, udp } рдкреНрд░рд╡рд╛рд╣ рдЬреЛрдбрд╛ @ft

  • рд╕реБрдзрд╛рд░рд┐рдд JSON рд╕рдорд░реНрдерди.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛