我需要它模拟某个 IP 和某个端口的延迟

我需要它模拟某个 IP 和某个端口的延迟

我需要模拟某个服务的流量减慢。这意味着我需要减慢某个端口上的连接速度。我有这个脚本,它在所有端口上对某个 IP 引入延迟,但该系统上运行的其他服务我无法减慢速度。

echo "simulating slowdown infrstructure on interface $DEV to IP:$IP for port:$PORT";
tc qdisc del dev $DEV root
tc qdisc add dev $DEV handle 1: root htb
tc class add dev $DEV parent 1: classid 1:15 htb rate 1000Mbps
tc qdisc add dev $DEV parent 1:15 handle 11 netem delay 4000ms 2000ms distribution normal
tc filter add dev $DEV parent 1:0 prio 1 protocol ip handle 11 fw flowid 1:15
iptables -A OUTPUT -t mangle -d "$IP" -j MARK --set-mark 11

我真的不知道这里最后一行的作用是什么,因为似乎没有它也可以工作。

((撤消脚本在这里:))

iptables -D OUTPUT -t mangle -d "$IP" -j MARK --set-mark 11
tc qdisc del dev $DEV root

答案1

最后一行捕获所有到特定 IP 的数据包(在所有端口上),并在其上添加标记(仅在内核内部)。

带有该标记的每个数据包都将被减慢速度。您只需在此规则中指定目标端口即可:

iptables -A OUTPUT -t mangle -d "$IP" -p tcp -- dport ${Port} -j MARK --set-mark 11

相关内容