[英]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.