Domain-Name-System
IPtables 按主機名將動態 IP 列入白名單
我想使用 iptables 將對伺服器的訪問限制為某些 IP,但是:
- 其中一個 IP 是動態的,是不時更改的正常 ISP 家庭連接。
- 當 IP 發生變化時,使用與 dyndns 類似的服務會自動更新子域,例如 dynamic.example.org。
如果 dynamic.example.org 解析為該 IP,是否可以讓 IPtables 允許訪問該埠?
我目前的想法是設置一個 systemd 單元,它會定期解析 dynamic.example.org 並相應地調整 iptables。但是,這也需要知道舊 IP 地址(因此將其儲存在某處)才能將其從白名單中刪除。
有沒有更簡單的方法可以做到這一點已經內置到 iptables 中?
iptables
適用於 IP 地址,而不適用於主機名。您可以使用主機名作為參數,但它們將在輸入命令時解析。對每個通過的數據包進行 DNS 查找會太慢。因此,您調整規則的想法是唯一的方法。這可以是定期安排,由 systemd 或 cron 等程序控制,或者如果您能夠在 IP 地址更改時收到通知,則更好。
您不必儲存舊地址,只需為您的規則創建一個 iptables 鏈並替換該規則。請參閱 的
-R
選項iptables
。要在第一次檢查時替換規則,只需添加一個虛擬規則,以便在第一次檢查執行時替換規則。您還可以避免額外的鏈並在
INPUT
or中的特定位置替換規則FORWARD
,但這需要維護更多的工作,因為每當您添加或刪除規則時位置編號都會更改。