Ubuntu

如何使用 ipset 阻止某些協議?

  • October 5, 2017

問題是,我目前有 3 台虛擬測試機,Client1、ip 192.168.1.10Client2、ip192.168.2.20和帶有 ip的路由器192.168.1.1,並192.168.2.1作為連接 Client1 和 Client2 的網關。

Router上,我hash:ip,port設置了,例如:

ipset add myset 192.168.2.20,tcp:80

ipset add myset 192.168.2.20,tcp:443

Client2上,我設置了 nginx 來偵聽埠 80,並且我不希望Client1能夠通過埠 80 上的 tcp連接到Client2 ,在****路由器上我添加了一條規則:iptables -A FORWARD -m set --match-set myset dst -j DROP

Client1我執行wget 192.168.2.20/index.html並且由於我在Router上的 iptables 規則,Client1不應該能夠連接到Client2和 grab index.html,但是,它不起作用並且可以成功檢索文件。

問題僅hash:ip,port在於 ipset 的設置類型。如果我選擇hash:ip類型並將協議/埠部分移出 ipset 到 iptables,一切正常。但是,我需要完全使用 ipset 才能隨時交換阻止列表。

我究竟做錯了什麼?所有 3 個虛擬機都在 Ubuntu 17.04 上執行,安裝最少,沒有 GUI。

多虧了這個評論,問題得到了解決: 我不得不使用(兩個dst
而 不是一個)

iptables -A FORWARD -m set --match-set myset dst -j DROP

iptables -A FORWARD -m set --match-set myset dst,dst -j DROP

引用自:https://unix.stackexchange.com/questions/395909