当前位置: 首页> 文旅> 文化 > 华为云软件开发平台_武汉企业招聘信息网_十大营销策略_网络营销是什么工作主要干啥

华为云软件开发平台_武汉企业招聘信息网_十大营销策略_网络营销是什么工作主要干啥

时间:2025/7/11 22:42:56来源:https://blog.csdn.net/pietian1157/article/details/144702203 浏览次数:0次
华为云软件开发平台_武汉企业招聘信息网_十大营销策略_网络营销是什么工作主要干啥

在上一篇文章中我们介绍了使用linux的tc工具来模拟弱网丢包的能力,介绍了随机丢包,突发丢包,GE模型,组合丢包,但是唯独没有连续丢包的介绍,那是因为tc-netem本身没有模拟连续丢包的能力,需要借助另外一个工具实现连续丢包,它就是iptables。

理解本篇文章先要了解一下上篇文章的内容

传送门: 使用tc命令模拟弱网丢包

iptables 是 Linux 内核中的一个强大工具,用于配置和管理网络流量的过滤规则。它是 Linux 内核防火墙框架 netfilter 的用户空间接口,允许管理员定义规则来控制进出网络接口的数据包。iptables 可以用于实现多种网络安全策略,如防火墙、NAT(网络地址转换)、流量控制等。

安装 iptables

在大多数 Linux 发行版中,iptables 通常已经预装。如果没有安装,可以使用包管理器来安装它

# 在 Debian/Ubuntu 系统上
sudo apt-get install iptables# 在 CentOS/RHEL 系统上
sudo yum install iptables

基本概念

在使用 iptables 之前,了解一些基本概念是非常重要的:

1. 表(Tables)

iptables 使用不同的表来处理不同类型的网络流量。常见的表包括:

  • filter:默认表,用于过滤数据包。
  • nat:用于网络地址转换(NAT)。
  • mangle:用于修改数据包。
  • raw:用于配置数据包的连接跟踪。

2. 链(Chains)

每个表包含多个链,链是规则的集合。常见的链包括:

  • INPUT:处理进入本地系统的数据包。
  • OUTPUT:处理从本地系统发出的数据包。
  • FORWARD:处理转发的数据包。
  • PREROUTING:在数据包路由之前处理。
  • POSTROUTING:在数据包路由之后处理。

3. 规则(Rules)

每个链包含多个规则,每条规则定义了匹配条件和相应的动作。当数据包匹配某条规则时,将执行该规则定义的动作。

基本用法

1. 查看规则

要查看当前的 iptables 规则,可以使用以下命令:


sudo iptables -L

在这个命令中:

  • -L:列出所有规则。

2. 添加规则

要添加一条规则,可以使用 -A 选项。例如,以下命令将允许所有来自特定 IP 地址的数据包:

sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT

在这个命令中:

  • -A INPUT:在 INPUT 链中添加规则。
  • -s 192.168.1.100:匹配源地址为 192.168.1.100 的数据包。
  • -j ACCEPT:接受匹配的数据包。

3. 删除规则

要删除一条规则,可以使用 -D 选项。例如,以下命令将删除 INPUT 链中的第一条规则:

sudo iptables -D INPUT 1

在这个命令中:

  • -D INPUT 1:删除 INPUT 链中的第一条规则。

4. 插入规则

要在特定位置插入一条规则,可以使用 -I 选项。例如,以下命令将在 INPUT 链的第一位置插入一条规则:

sudo iptables -I INPUT 1 -s 192.168.1.100 -j ACCEPT

在这个命令中:

  • -I INPUT 1:在 INPUT 链的第一位置插入规则。

实现突发丢包

我们这里使用的是iptables的标记功能,通过在kernel中对ip数据包进行标记,再tc netem通过规则丢弃掉所有标记的数据包来实现突发丢包的效果

首先建立tc规则

# 删除旧的tc netem 规则
tc qdisc del dev eth0 root
# 添加 qdisc 规则
tc qdisc add dev eth0 root handle 1: prio bands 3 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
# 添加过滤器,匹配标记为 1 的数据包,并应用 netem 丢弃规则
tc filter add dev enp1s0 protocol ip parent 1:0 prio 1 handle 1 fw flowid 1:1
# 配置 netem 丢弃规则将标记包全部丢弃
tc qdisc add dev enp1s0 parent 1:1 handle 10: netem loss 100%

使用iptables 标记包,并识别已标记包的数量,超过需求数量则关闭iptables规则,这里使用一个sh脚本来实现

#!/bin/bash# 检查是否提供了参数
if [ -z "$1" ]; thenecho "请提供连续丢包的个数作为参数"exit 1
fi# 将参数赋值给 TARGET_COUNT
TARGET_COUNT=$1# 规则计数器
RULE_COUNT=0# 规则链和规则编号
CHAIN="FORWARD"
TABLE="mangle"
RULE_NUM=1
PORT = 10001
SOURCE_IP = 192.168.0.1
DEST_IP  = 192.168.0.2# 清除现有的 iptables 规则
sudo iptables -t $TABLE -F $CHAIN# 标记特定端口
iptables -t $TABLE -A $CHAIN -p udp -s $SOURCE_IP -d $DEST_IP --dport $PORT  -m limit --limit $TARGET_COUNT/sec --limit-burst $TARGET_COUNT -j MARK --set-mark 1while true; do# 获取当前规则的计数CURRENT_COUNT=$(iptables -t $TABLE -L $CHAIN -v -n | grep "MARK" | awk '{print $1}')echo $CURRENT_COUNT# 检查计数是否达到目标if [ "$CURRENT_COUNT" -ge "$TARGET_COUNT" ]; then# 删除规则iptables -t $TABLE -D $CHAIN $RULE_NUMecho "规则已删除"breakfisleep 0.01
done

通过该脚本可以控制连续丢包数,实现连续丢包, 使用中要注意标记的ip与端口号要与tc-netem的规则一致,才能实现丢包

关键字:华为云软件开发平台_武汉企业招聘信息网_十大营销策略_网络营销是什么工作主要干啥

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: