如何使用 nft 將所有前往特定位址的流量路由到本機?

如何使用 nft 將所有前往特定位址的流量路由到本機?

我需要攔截前往外部 IP 的流量並將其重新路由到本地主機。使用 iptables 非常簡單,但我無法理解如何透過 nft 使其工作。我在 nft 內建立表格和鏈,但無法建立規則,nft 說操作不支援。

表格

sudo /usr/sbin/nft list ruleset
table ip filter {
        chain OUTPUT {
                type filter hook output priority filter; policy accept;
        }
}

規則

sudo /usr/sbin/nft  add rule ip filter OUTPUT ip daddr $EXTERNAL_ADDRESS counter dnat to 127.0.0.1
Error: Could not process rule: Operation not supported

核心模組

lsmod | grep nf_tables
nf_tables             360448  1 nft_nat
libcrc32c              12288  3 nf_conntrack,nf_nat,nf_tables
nfnetlink              20480  1 nf_tables

我的規則有什麼問題,或者可以變得簡單嗎?

答案1

為主機指派 IP 位址。路由所有流量是轉發表的用途,防火牆可以做到這一點,但這通常是不必要的。

例如,在 Linux 上分配一個我寫的 IP 位址來環回:

  ip a add 2001:db8:114:6402::1020 dev lo

作為單主機路由,即使它通常存在於互聯網上的其他地方,它也將具有優先權。在環回介面上,其他主機不會知道它,只能透過「離開」同一主機的流量到達。

如果主機是路由器,請決定是否要將其通告給其他路由器。

讀者練習:在 IPAM 和 DNS 中註冊。使其與發行版的網路管理器保持一致。

相關內容