Smtp
NFTables:是否可以在不偽裝的情況下轉發流量?
我有一個遠端伺服器(B),它將某些傳入流量轉發到不同伺服器的另一個埠(A,dest)。
使用“偽裝”,我只能看到來自轉發伺服器 (B) 的流量,是否可以看到來自原始來源 (C) 的流量?如果我將“偽裝”替換為“接受”,我將無法再到達目的地 (A) 的 8080 埠。
草圖:
C -> B:25 -> A:8080 # A receives C requests as if B made them # Unfortunately this breaks some implementations like SPF
NFTables 配置:
# define destination address define dest = 10.0.0.2 # table for smtp forwarding table ip smtp { chain pre { type nat hook prerouting priority -100 tcp dport 25 dnat to $dest:8080 } chain post { type nat hook postrouting priority 100 ip daddr $dest masquerade } }
由於Tero Kilkanen很高興回答我的問題,我希望可以為您提供一個最小的工作範例。
前提條件:
- IP 轉發必須
sysctl -a | grep forward
在remote server
- 兩台伺服器必須在同一個網路中
- 您
different server
必須擁有remote server
預設網關(在您的情況下這可能嗎?)- 核心應該是 4.18 否則你還需要定義一個後路由規則(參見nftables wiki)
- 否則,您
remote server
的外部介面將相應替換enp35s0
鑑於此,您可以使用以下 NFTables 規則
table ip nat { chain prerouting { type nat hook prerouting priority 0; policy accept; iif "enp35s0" tcp dport 25 dnat to 10.0.0.2:8080 } } table inet filter { chain input { type filter hook input priority 0; policy accept; } chain forward { type filter hook forward priority 0; policy accept; } chain output { type filter hook output priority 0; policy accept; } }
調試檢查 tcpdump
different server