问题是,我目前有 3 个虚拟测试机,客户1, ip 192.168.1.10
,客户端2、IP192.168.2.20
和路由器使用 ip192.168.1.1
并192.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,port
ipset 的 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
(两个目的地而不是一个)