
我需要攔截前往外部 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 中註冊。使其與發行版的網路管理器保持一致。