Skip to content

Commit d8748e5

Browse files
alinnastacdedeckeh
authored andcommitted
netfilter: add iptables-mod-rpfilter package
Unlike /proc/sys/net/ipv4/conf/INTF/rp_filter flag, rule iptables -t raw -I PREROUTING -m rpfilter --invert -j DROP prevents conntrack table to become full when a packet flood with randomly selected source IP addresses is received from the lan side. Signed-off-by: Alin Nastac <[email protected]>
1 parent a35a27e commit d8748e5

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

include/netfilter.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ $(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_STRING, $(P_XT)xt_stri
106106
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_DSCP, $(P_XT)xt_dscp))
107107
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_DSCP, $(P_XT)xt_DSCP))
108108
$(eval $(call nf_add,IPT_HASHLIMIT,CONFIG_NETFILTER_XT_MATCH_HASHLIMIT, $(P_XT)xt_hashlimit))
109+
$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP_NF_MATCH_RPFILTER, $(P_V4)ipt_rpfilter))
110+
$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP6_NF_MATCH_RPFILTER, $(P_V6)ip6t_rpfilter))
109111
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_LENGTH, $(P_XT)xt_length))
110112
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_STATISTIC, $(P_XT)xt_statistic))
111113
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_TCPMSS, $(P_XT)xt_tcpmss))

package/kernel/linux/modules/netfilter.mk

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -836,6 +836,24 @@ endef
836836

837837
$(eval $(call KernelPackage,ipt-hashlimit))
838838

839+
define KernelPackage/ipt-rpfilter
840+
SUBMENU:=$(NF_MENU)
841+
TITLE:=Netfilter rpfilter match
842+
DEPENDS:=+kmod-ipt-core
843+
KCONFIG:=$(KCONFIG_IPT_RPFILTER)
844+
FILES:=$(realpath \
845+
$(LINUX_DIR)/net/ipv4/netfilter/ipt_rpfilter.ko \
846+
$(LINUX_DIR)/net/ipv6/netfilter/ip6t_rpfilter.ko)
847+
AUTOLOAD:=$(call AutoProbe,ipt_rpfilter ip6t_rpfilter)
848+
$(call KernelPackage/ipt)
849+
endef
850+
851+
define KernelPackage/ipt-rpfilter/description
852+
Kernel modules support for the Netfilter rpfilter match
853+
endef
854+
855+
$(eval $(call KernelPackage,ipt-rpfilter))
856+
839857

840858
define KernelPackage/nft-core
841859
SUBMENU:=$(NF_MENU)

package/network/utils/iptables/Makefile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,19 @@ iptables extensions for hashlimit matching
242242

243243
endef
244244

245+
define Package/iptables-mod-rpfilter
246+
$(call Package/iptables/Module, +kmod-ipt-rpfilter)
247+
TITLE:=rpfilter iptables extension
248+
endef
249+
250+
define Package/iptables-mod-rpfilter/description
251+
iptables extensions for reverse path filter test on a packet
252+
253+
Matches:
254+
- rpfilter
255+
256+
endef
257+
245258
define Package/iptables-mod-iprange
246259
$(call Package/iptables/Module, +kmod-ipt-iprange)
247260
TITLE:=IP range extension
@@ -565,6 +578,7 @@ $(eval $(call BuildPlugin,iptables-mod-cluster,$(IPT_CLUSTER-m)))
565578
$(eval $(call BuildPlugin,iptables-mod-clusterip,$(IPT_CLUSTERIP-m)))
566579
$(eval $(call BuildPlugin,iptables-mod-ulog,$(IPT_ULOG-m)))
567580
$(eval $(call BuildPlugin,iptables-mod-hashlimit,$(IPT_HASHLIMIT-m)))
581+
$(eval $(call BuildPlugin,iptables-mod-rpfilter,$(IPT_RPFILTER-m)))
568582
$(eval $(call BuildPlugin,iptables-mod-led,$(IPT_LED-m)))
569583
$(eval $(call BuildPlugin,iptables-mod-tproxy,$(IPT_TPROXY-m)))
570584
$(eval $(call BuildPlugin,iptables-mod-tee,$(IPT_TEE-m)))

0 commit comments

Comments
 (0)