Domain-Name-System

IPtables 按主機名將動態 IP 列入白名單

  • December 10, 2021

我想使用 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。要在第一次檢查時替換規則,只需添加一個虛擬規則,以便在第一次檢查執行時替換規則。

您還可以避免額外的鏈並在INPUTor中的特定位置替換規則FORWARD,但這需要維護更多的工作,因為每當您添加或刪除規則時位置編號都會更改。

引用自:https://serverfault.com/questions/937248