簡體   English   中英

計算 Linux 中轉發的特定端口的流量

[英]Calculate the traffic for specific port forwarded in the Linux

我有一台運行 Linux 的服務器:服務器 AI 希望將服務器 A 上的流量重定向到遠程服務器 b 實際上與轉發端口相同,我對轉發端口使用了以下命令。

sysctl net.ipv4.ip_forward = 1
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 150 -j DNAT - to-destination des_ip:dest_port
iptables -t nat -A POSTROUTING -j MASQUERADE

轉發端口做得很好,我可以通過服務器 B 連接到服務器 B。現在我想知道服務器 A 的端口 150 上使用了多少流量? 如果服務器 A 不是路由器,我可以使用以下命令輕松設置限制並計算服務器 A 上消耗的流量。

sudo iptables -A INPUT -p tcp --dport 150 -j DROP
sudo iptables -A INPUT -p tcp --dport 150 -m quota --quota 100000000 -j ACCEPT

但是因為服務器 A 是路由器,所以這些命令不起作用 有沒有其他命令行可以用來計算服務器 A 上端口 150 的消耗流量(服務器 A 是路由器)? 我想使用 Python 收集每個端口的使用數據並將其存儲在數據庫中。

在這個問題中,我想將源端口 150 端口重定向到目標端口。

在研究了 iptables 中的 PREROUTING 和 INPUT 鏈后,我意識到:

INPUT 鏈在 PREROUTING 鏈之后。 根據這個示意圖。

在 PREROUTING 鏈中,端口由 NAT 轉換為目標端口,因此在 INPUT 鏈中,源端口沒有流量,所有流量都轉換為目標端口。

我可以看到 INPUT 鏈中目標端口的網絡使用情況,但看不到 INPUT 鏈中源端口的網絡使用情況。

因為所有數據包標頭都轉換為目標端口。

因此,源端口的配額確實不會在任何鏈中開始計數。

即使我在 FORWARD 鏈中創建以下規則:

sudo iptables -A FORWARD -p tcp --dport 150 -j DROP
sudo iptables -A FORWARD -p tcp --dport 150 -m quota --quota 100000000 -j ACCEPT

同樣,我們不會看到配額有任何變化,因為 FORWARD 鏈在 PREROUTING 鏈之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM