<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://adm30.ru/index.php?action=history&amp;feed=atom&amp;title=Firewall%3A_nftables</id>
	<title>Firewall: nftables - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://adm30.ru/index.php?action=history&amp;feed=atom&amp;title=Firewall%3A_nftables"/>
	<link rel="alternate" type="text/html" href="https://adm30.ru/index.php?title=Firewall:_nftables&amp;action=history"/>
	<updated>2026-10-19T23:20:44Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://adm30.ru/index.php?title=Firewall:_nftables&amp;diff=2843&amp;oldid=prev</id>
		<title>Admin: /* Определение таблицы IPv4 */</title>
		<link rel="alternate" type="text/html" href="https://adm30.ru/index.php?title=Firewall:_nftables&amp;diff=2843&amp;oldid=prev"/>
		<updated>2025-12-30T08:05:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Определение таблицы IPv4&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Базовая информация ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|type&lt;br /&gt;
|-&lt;br /&gt;
|filter||Supported by arp, bridge, ip, ip6 and inet table families&lt;br /&gt;
|-&lt;br /&gt;
|route||Mark packets (like mangle for the output hook, for other hooks use the type filter instead), supported by ip and ip6&lt;br /&gt;
|-&lt;br /&gt;
|nat||In order to perform Network Address Translation, supported by ip and ip6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|приоритет&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_CONNTRACK_DEFRAG||-400&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_RAW||-300&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_SELINUX_FIRST||-225&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_CONNTRACK||-200&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_MANGLE||-150&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_NAT_DST||-100&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_FILTER||0&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_SECURITY||50&lt;br /&gt;
|-&lt;br /&gt;
|NF_IP_PRI_NAT_SRC||100&lt;br /&gt;
|-&lt;br /&gt;
|-NF_IP_PRI_SELINUX_LAST||225&lt;br /&gt;
|-&lt;br /&gt;
|-NF_IP_PRI_CONNTRACK_HELPER||300&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
https://people.netfilter.org/pablo/nf-hooks.png&lt;br /&gt;
&lt;br /&gt;
== Определение таблицы IPv4 ==&lt;br /&gt;
&lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 include &amp;quot;/etc/nftables/define.nft&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 table ip tbl0 {&lt;br /&gt;
 	include &amp;quot;/etc/nftables/counters.nft&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 	include &amp;quot;/etc/nftables/adm30/set_saddr.nft&amp;quot;&lt;br /&gt;
 	include &amp;quot;/etc/nftables/adm30/set_saddr-daddr.nft&amp;quot;&lt;br /&gt;
 	include &amp;quot;/etc/nftables/set_dport.nft&amp;quot;&lt;br /&gt;
 	include &amp;quot;/etc/nftables/set_daddr.nft&amp;quot;&lt;br /&gt;
 	include &amp;quot;/etc/nftables/set_saddr.nft&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 	include &amp;quot;/etc/nftables/mangle_pre.nft&amp;quot;&lt;br /&gt;
 	include &amp;quot;/etc/nftables/mangle_post.nft&amp;quot;&lt;br /&gt;
 	include &amp;quot;/etc/nftables/mangle_out.nft&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 	include &amp;quot;/etc/nftables/nat_dst.nft&amp;quot;&lt;br /&gt;
 	include &amp;quot;/etc/nftables/nat_src.nft&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 	include &amp;quot;/etc/nftables/filter_fwd.nft&amp;quot;&lt;br /&gt;
 	include &amp;quot;/etc/nftables/filter_in.nft&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Инициализация базовых цепочек ====&lt;br /&gt;
&lt;br /&gt;
 chain mangle_pre {&lt;br /&gt;
 	type filter hook prerouting priority -150; policy accept;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 chain mangle_post {&lt;br /&gt;
 	type filter hook postrouting priority -150; policy accept;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 chain mangle_out {&lt;br /&gt;
 	type route hook output priority -150; policy accept;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 chain nat_dst {&lt;br /&gt;
 	type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 chain nat_src {&lt;br /&gt;
 	type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 chain filter_fwd {&lt;br /&gt;
 	type filter hook forward priority 0; policy drop;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 chain filter_in {&lt;br /&gt;
 	type filter hook input priority 0; policy drop;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 chain filter_out {&lt;br /&gt;
 	type filter hook output priority filter; policy accept;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Определения структур ==&lt;br /&gt;
&lt;br /&gt;
==== Определение наборов портов ====&lt;br /&gt;
&lt;br /&gt;
 set dport_tcp_1c {&lt;br /&gt;
 	type inet_service&lt;br /&gt;
 	flags interval&lt;br /&gt;
 	elements = { 1540, 1541, 1560-1591 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 set dport_tcp_aspia {&lt;br /&gt;
 	type inet_service&lt;br /&gt;
 	elements = { 8060, 8070 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 set dport_tcp_http {&lt;br /&gt;
 	type inet_service&lt;br /&gt;
 	elements = { 80, 443 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 set dport_tcp_smtp {&lt;br /&gt;
 	type inet_service&lt;br /&gt;
 	elements = { 25, 465, 587 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 set dport_tcp_imap {&lt;br /&gt;
 	type inet_service&lt;br /&gt;
 	elements = { 143, 993 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 set dport_tcp_dc {&lt;br /&gt;
 	type inet_service&lt;br /&gt;
 	flags interval&lt;br /&gt;
 	elements = { 53, 88, 135, 139, 389, 445, 464, 636, 3268, 3269, 49152-49154 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 set dport_udp_dc {&lt;br /&gt;
 	type inet_service&lt;br /&gt;
 	elements = { 53, 88, 137, 389, 464 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Определение IP-назначений ====&lt;br /&gt;
&lt;br /&gt;
 define daddr_host_br = 192.168.11.130 &amp;lt;font style=&amp;quot;color:#505050;&amp;quot;&amp;gt;//локальный адрес bridge-интерфейса сервера&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define daddr_host_tun = 192.168.11.161 &amp;lt;font style=&amp;quot;color:#505050;&amp;quot;&amp;gt;//локальный адрес tun-интерфейса сервера&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define daddr_1c = 192.168.11.133&lt;br /&gt;
&lt;br /&gt;
==== Определение наборов IP-источников ====&lt;br /&gt;
&lt;br /&gt;
 Набор [https://adm30.ru/fls/conf/nftables/set_saddr.nft.txt set_saddr.nft] из пакета [[Репозиторий пакетов:_nftables-rules-adm30|nftables-rules-adm30]]&lt;br /&gt;
&lt;br /&gt;
 set saddr_ovpn_admin {&lt;br /&gt;
 	type ipv4_addr&lt;br /&gt;
 	elements = { 192.168.2.10, 192.168.2.11 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 set saddr_ovpn_to_1c {&lt;br /&gt;
 	type ipv4_addr&lt;br /&gt;
 	elements = { 192.168.11.164 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 set saddr_to_usbipd {&lt;br /&gt;
 	type ipv4_addr&lt;br /&gt;
 	flags interval&lt;br /&gt;
 	elements = { 192.168.11.128/27, 192.168.11.160/28, 18.6.19.89 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Определение наборов двунаправленных IP ====&lt;br /&gt;
&lt;br /&gt;
 Набор [https://adm30.ru/fls/conf/nftables/set_saddr-daddr.nft.txt set_saddr-daddr.nft] из пакета [[Репозиторий пакетов:_nftables-rules-adm30|nftables-rules-adm30]]&lt;br /&gt;
&lt;br /&gt;
==== Определение счетчиков ====&lt;br /&gt;
&lt;br /&gt;
 counter cnt_smtp {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 counter cnt_http {&lt;br /&gt;
 	comment &amp;quot;count both http and https packets&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;filter&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
 ip saddr @saddr-daddr_local udp dport { 53, 123 } accept&lt;br /&gt;
&lt;br /&gt;
 ip saddr @saddr-daddr_local ip protocol icmp accept&lt;br /&gt;
 icmp type echo-request accept&lt;br /&gt;
&lt;br /&gt;
 ip saddr @saddr_x ip daddr @daddr_x tcp dport @dport_tcp_x accept&lt;br /&gt;
&lt;br /&gt;
 ip saddr 192.168.11.111 ether saddr 50:50:00:30:C0:60 accept&lt;br /&gt;
&lt;br /&gt;
 ip saddr @saddr-daddr_local tcp dport 22 ct state new limit rate 2/hour burst 2 packets counter accept&lt;br /&gt;
 ip daddr 172.16.0.55 tcp dport @dport_tcp_http ct state new limit rate 30/second burst 30 packets counter accept&lt;br /&gt;
&lt;br /&gt;
 ip daddr 192.168.11.111 tcp dport @dport_tcp_1c jump filter-in_dport_tcp_1c&lt;br /&gt;
&lt;br /&gt;
 tcp dport { 80, 443 } counter name cnt_http accept&lt;br /&gt;
&lt;br /&gt;
 tcp dport 22 ct state new accept&lt;br /&gt;
&lt;br /&gt;
 udp dport 1194 accept&lt;br /&gt;
&lt;br /&gt;
 iif{,name} &amp;quot;lo&amp;quot; accept&lt;br /&gt;
&lt;br /&gt;
 reject with icmp type admin-prohibited&lt;br /&gt;
 reject with icmp type host-prohibited&lt;br /&gt;
 reject with icmp type host-unreachable&lt;br /&gt;
 reject with icmp type net-prohibited&lt;br /&gt;
 reject with icmp type net-unreachable&lt;br /&gt;
 reject with icmp type port-unreachable (default)&lt;br /&gt;
 reject with icmp type prot-unreachable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;nat&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ip daddr $daddr_host_tun tcp dport @dport_tcp_1c dnat to $daddr_1c&lt;br /&gt;
&lt;br /&gt;
 ip daddr 195.82.146.120/30 tcp dport 80 dnat to 163.172.167.207:3128&lt;br /&gt;
&lt;br /&gt;
 ip daddr 192.168.100.0/24 snat to 192.168.100.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;mangle&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ip saddr 192.168.11.192/27 ip protocol tcp ct state new ct mark 0x0 jump pre1_mark_ovpn&lt;br /&gt;
 ip saddr 192.168.11.192/27 ct mark set 0x1&lt;br /&gt;
 mark 0x1 counter meta priority set 1:1&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>