如何使用 ipset 阻止某些协议?

如何使用 ipset 阻止某些协议?

问题是,我目前有 3 个虚拟测试机,客户1, ip 192.168.1.10,客户端2、IP192.168.2.20路由器使用 ip192.168.1.1192.168.2.1作为连接 Client1 和 Client2 的网关。

路由器,我已经hash:ip,port设置了,例如:
ipset add myset 192.168.2.20,tcp:80
ipset add myset 192.168.2.20,tcp:443

客户端2我有 nginx 设置来监听端口 80,但我不想客户1能够连接到客户端2通过端口 80 上的 TCP,路由器我添加一条规则:iptables -A FORWARD -m set --match-set myset dst -j DROP

客户1我执行wget 192.168.2.20/index.html并由于我的 iptables 规则路由器,客户1应该无法连接到客户端2但是, grabindex.html不起作用,并且可以成功检索文件。

问题仅在于hash:ip,portipset 的 set 类型。如果我选择hash:ip类型并将协议/端口部分从 ipset 移至 iptables,则一切正常。但是,我需要准确地使用 ipset 才能随时交换阻止列表。

我究竟做错了什么?所有 3 个虚拟机都在 Ubuntu 17.04 上运行,最小化安装,无 GUI。

答案1

谢谢评论,问题解决了:
而不是
iptables -A FORWARD -m set --match-set myset dst -j DROP
我不得不使用
iptables -A FORWARD -m set --match-set myset dst,dst -j DROP(两个目的地而不是一个)

相关内容