Linux
單介面iptables轉發
是否可以將
Iptables
所有流向某個網路的流量轉發到給定的 IP 地址?我必須
Ubuntu server
充當網路中的路由器192.168.1.0/24
。它IP
是192.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
到 ip192.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。