Linux

單介面iptables轉發

  • January 20, 2016

是否可以將Iptables所有流向某個網路的流量轉發到給定的 IP 地址?

我必須Ubuntu server充當網路中的路由器192.168.1.0/24。它IP192.168.1.254。(這個“路由器”只有一個網路介面eth0。)

網路上的客戶端192.168.1.0/24設置了以下靜態路由:

Network      Mask           Gateway
172.16.1.0  255.255.255.0  192.168.1.254

有了這個,客戶端將流量發送172.16.1.0到我的路由器。

使用路由器,我想將流量重定向172.16.1.0到 ip 192.168.2.254

我不想要地址轉換,設備上192.168.2.254應該看到來自客戶端的流量,而不是來自路由器的流量192.168.1.254

(這可能看起來很複雜,這是因為我無法控制這些網路之間的設備。這就是為什麼我在我的網路中創建了新路由器,而不是向連接這些網路的路由器添加新路由。)

我已啟用 ip 轉發sysctl.conf

我試過這個Iptables配置:

獲取需要路由的包:

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       all  --  anywhere             172.16.1.0/24      to:192.168.2.254

將這些包轉發到目標:

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             192.168.2.254            

但這似乎沒有做任何事情。

最後,我通過將第二個網路介面連接到我的路由器設備來解決這個問題。我配置了第二個介面來連接另一個網路。

ip route add然後我剛剛使用命令創建了到我的虛擬網路的新靜態路由。

如果您想將流量從源發送到目的地,則需要static routes使用iptables. Iptables讓您接受或拒絕通過您的機器的任何流量,但它不會重定向任何數據。

出於您的目的,您可以在 Ubuntu 伺服器路由器中嘗試以下路由192.168.1.254

ip route add 172.16.1.0/24 via 192.168.2.254

這不應該對路由數據包進行任何 NAT。

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