diff --git a/package/iptables/Makefile b/package/iptables/Makefile
index 87d898bea06f80fe4b9741b39aeb38261907a33a..a401115de059c3061da0f4816ea932ad52a19496 100644
--- a/package/iptables/Makefile
+++ b/package/iptables/Makefile
@@ -189,6 +189,17 @@ Includes:
 - libipt_ULOG
 endef
 
+define Package/iptables-mod-hashlimit
+$(call Package/iptables/Module, +kmod-ipt-hashlimit)
+  TITLE:=hashlimit matching
+endef
+
+define Package/iptables-mod-hashlimit/description
+iptables extensions for hashlimit matching
+Includes:
+- libxt_hashlimit
+endef
+
 define Package/iptables-mod-iprange
 $(call Package/iptables/Module, +kmod-ipt-iprange)
   TITLE:=IP range extension
@@ -394,6 +405,7 @@ $(eval $(call BuildPlugin,iptables-mod-nat,$(IPT_NAT-m)))
 $(eval $(call BuildPlugin,iptables-mod-nat-extra,$(IPT_NAT_EXTRA-m)))
 $(eval $(call BuildPlugin,iptables-mod-iprange,$(IPT_IPRANGE-m)))
 $(eval $(call BuildPlugin,iptables-mod-ulog,$(IPT_ULOG-m)))
+$(eval $(call BuildPlugin,iptables-mod-hashlimit,$(IPT_HASHLIMIT-m)))
 $(eval $(call BuildPlugin,iptables-mod-tproxy,$(IPT_TPROXY-m)))
 $(eval $(call BuildPackage,ip6tables))
 $(eval $(call BuildPackage,ip6tables-utils))
diff --git a/package/kernel/modules/netfilter.mk b/package/kernel/modules/netfilter.mk
index 561286efda7f2f44319538919940f6f1647c7b89..510c195d6231d43a2f5188524f9a954f904a0f0c 100644
--- a/package/kernel/modules/netfilter.mk
+++ b/package/kernel/modules/netfilter.mk
@@ -512,3 +512,17 @@ define KernelPackage/nf-conntrack-netlink/description
 endef
 
 $(eval $(call KernelPackage,nf-conntrack-netlink))
+
+define KernelPackage/ipt-hashlimit
+$(call KernelPackage/ipt/Depends,)
+  TITLE:=Netfilter hashlimit match
+  FILES:=$(LINUX_DIR)/net/netfilter/xt_hashlimit.$(LINUX_KMOD_SUFFIX)
+  KCONFIG:=$(KCONFIG_IPT_HASHLIMIT)
+  AUTOLOAD:=$(call AutoLoad,50,xt_hashlimit)
+endef
+
+define KernelPackage/ipt-hashlimit/description
+ Kernel modules support for the hashlimit bucket match module
+endef
+
+$(eval $(call KernelPackage,ipt-hashlimit))