Ipset - Arch Linux 中文维基

跳至內容

# Ipset

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Ipset，最近一次同步於 2016-06-14，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- Firewalls
- Iptables

ipset是 Linux 防火牆 iptables 的一個協助工具。 通過這個工具可以輕鬆愉快地屏蔽一組IP位址。

## 安裝

安裝軟體包 ipset包。

## 配置

### 屏蔽一組地址

先創建一個新的網絡地址的"集合"。下面的命令創建了一個新的叫做"myset"的"net"網絡地址的"hash"集合。

    # ipset create myset hash:net

或

    # ipset -N myset nethash

把希望屏蔽的IP位址添加到集合中。

    # ipset add myset 14.144.0.0/12
    # ipset add myset 27.8.0.0/13
    # ipset add myset 58.16.0.0/15

最後，配置 iptables，屏蔽這個集合中的所有地址。這個命令將會向"INPUT"鏈頂端添加一個規則來從 ipset 中 "-m" 匹配名為 "myset" 的集合，當匹配到的包是一個"src"包時，"DROP"屏蔽掉它。

    # iptables -I INPUT -m set --match-set myset src -j DROP

### 屏蔽多個 IP 地址

先創建一個 IP 地址"集合"，下面命令創建一個 "myset-ip" 散列集合。

    # ipset create myset-ip hash:ip

或

    # ipset -N myset-ip iphash

將要屏蔽的地址加入此集合：

    # ipset add myset-ip 1.1.1.1
    # ipset -A myset-ip 2.2.2.2

最後，用 iptables 屏蔽集合中的所有地址.

    # iptables -I INPUT -m set --match-set myset-ip src -j DROP

### 使ipset持久化

上面創建的 ipset 存在於內存中，重啟後將會消失。要使ipset持久化，你要這樣做：

首先把 ipset 保存到 /etc/ipset.conf:

    # ipset save > /etc/ipset.conf

然後啟用 `ipset.service`, 與 `iptables.service`相似，這個服務用於恢復iptables 規則。

### 使用PeerGuardian和其它列表屏蔽

maeyanie.com所作的pg2ipset-gitAUR與ipset-update.sh 腳本配合可以用cron來自動更新多個屏蔽列表。 當前實現了按默認國家屏蔽，tor退出節點屏蔽，和來自Bluetack的pg2列表屏蔽。

## 其他命令

查看集合。

    # ipset list

刪除名為"myset"的集合。

    # ipset destroy myset

刪除所有集合。

    # ipset destroy

更多信息請參考ipset的man手冊頁。

## 優化

iprangeAUR工具可以通過合併相鄰範圍或消除重複範圍來幫助減少ipset.conf中的項目。 在表的大小很大時，這有助於改善路由/防火牆的性能。這個工具也可以把一個主機名的列錶轉換成IP列表。

雖然 ipset 設計上可以支持非常大的屏蔽，但並不是無限的。有些國家的 IP 地址空間非常龐大，所以按區域屏蔽的效果並不理想。

分類：​

- 防火牆

Ipset
新增話題