linux网关下的TC控速

2023-05-16

控制上传下载速度理论方面的相关记录
1、对于TC限速配置方面,最关键的要明白,TC限速实际上是在分析每个经过的IP数据包,根据我们给定的限速规则,将不同的IP数据包归入到不同的分类中,也可以理解为不同的通道。
2、在内部网,让多台主机通过一个IP地址上网的时候,需要进行NAT转发,最常用的是MASQUERADE的IP地址伪装,这解决了内部网多台主机,通过一个宽带或者专线给定的IP地址,实现同时上网的要求。要想让内部网多台主机同时上网,只要网关做给定IP的IP地址伪装,就可以完成开通上网的动作。
3、在网关内部的NAT转换时,基本的做法是将内部网上传出去的IP数据包中的源IP地址和端口,更改为网关指定的网关IP地址和临时的一个端口号,这样就形成一个IP+端口号的地址对,这个地址对被暂时记录到了网关的NAT转发表中,直到任务完成,这个地址对才被删除,这是基本的做法,还有其他的比如完全圆锥形NAT等,这部分可以参考网上的NAT原理。注意,在网关上NAT转换的时候,给的是一个临时端口,并不是特定的端口,这样才能解决多台主机或者一台主机多上网任务情况下,需要多个数据传输的问题,也就是说一台主机在上网同时打游戏的情况下,可以在网关开通多个地址对,也就是说IP地址一样,但是端口不同,这样形成的地址对不一样,才能实现上传和下载的数据不会混乱。
4、网关的架构:一般理解为 eth0--内核NAT--eth1,这样的过程,当然这是通过网关的数据,而不是进入网关的数据。也就是说,所有数据包要注意考虑经过内核后进行NAT转换后,包头的IP地址是怎么变化的。从内网到外网的数据包,是源地址IP被改为网关外网口的IP地址+临时的端口,从外网到内网的数据包,其目的地址IP是网关的外网IP+之前给的临时端口,NAT转换时,根据NAT表中的临时记录,将该数据包的目的IP地址改为内网指定主机的IP及相应的端口,并在内网口发布。
5、控制速度来说,只能控制对应网卡的数据发送速度,其实是对IP数据包发送规则进行了重新整理,而无法对接受数据包进行整理,所以需要注意,限制只能限制对应网卡的发送速度,而无法控制接受速度。
6、这样就可以知道,我们要控制下载速度,那么应该是控制网关内网口的发送速度,而控制上传速度就是控制网关外网口的发送速度。
7、对控制下载速度而言,由于数据包通过内网口的时候,已经由网关内核进行了NAT转换,所以特定的主机接收到的数据包,其目的地址IP已经是该主机的IP。
8、而对控制上传速度而言,在数据包通过外网口的时候,是数据包的特征应该是源地址IP全部变成了外网口的IP,目的IP地址不变。
9、根据通过网口的数据包特征,可以知道,在控制下载速度的时候,我们可以在TC里面,直接使用U32 选择器,因为目的IP地址是特定的,也就是我们需要控制速度的主机IP,所以使用u32 match ip dst 192.168.1.20,可以这样写。但是在控制上传速度的时候,U32的控制写法就无法控制了,因为目的IP地址很多,源地址IP已经被改成网关IP,控制不起来。所以在控制上传速度的时候,一般可以用IPTABLES PREROUTINg 的时候,用mangle给该数据包打上一个MARK标识,然后在该数据包通过外网口的时候,用FW规则来匹配MARK标识,根据FW规则而将指定的数据包归入到相应的分类中。
10、另外要注意,所有已经启用的网卡,有一个默认的qdisc队列,这队列是不用删除的,只要你另外创建队列,这个默认队列就消失了。你的脚本执行一次后,就会在网关上启用,但是网关重启后,就会消失,所以要将TC脚本放置在linux网关的开机启动中,一般来说放置在rc.local中,我的推荐是将上传限速和下载限速分开两个脚本,然后将链接放置到rc.local中,这样更为方便。
示例:


上传控制
iptables -t mangle -A PREROUTING -s 192.168.1.20 -j MARK --set-mark 1  打上标识1
iptables -t mangle -A PREROUTING -d 192.168.10.20 -j MARK --set-mark 2   这样可以给发送到特定IP的数据包打上标识2
tc filter add dev eth0  parent 1: protocol ip prio 1 handle 1 fw classid 1:1 FW过滤器,匹配标识1,归入分类1:1
tc filter add dev eth0  parent 1: protocol ip prio 1 handle 2 fw classid 1:2 FW过滤器,匹配标识2,归入分类1:2
下载控制
tc filter add dev eth1 parent 1: protocol ip prio 1 u32 match ip dst 192.168.1.20 flowid 1:1 将下载到192.168.1.20的数据包,归入分类1:1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9606200/viewspace-1435666/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9606200/viewspace-1435666/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux网关下的TC控速 的相关文章

  • Ubuntu删除Compiz之后 恢复方法

    因为ubuntu14 10不能播放avi的问题纠结了很久 xff0c 最终使用转码软件解决的 但是还是不甘心啊 xff0c 总想解决这个问题或者知道问题的原因 偶然看到了系统中的compiz软件 xff0c 想到在网上看到的有人说是因为系统
  • Ubuntu14.10 unity-tweak-tool 不能正常打开的解决方法

    新的系统 xff0c 风格都变了 xff0c 折腾了一晚上 xff0c 想安装个苹果主题 xff0c 可是unity tweak tool 这个东西就是死活打不开 这么晚了 xff0c 不想多说了 xff0c 直接给解决方法吧 xff1a
  • 安装ubuntu14.04后做的一些事情

    ubuntu又折腾坏了 xff0c 于是有重新装系统了 装完之后 xff0c 美化美化 xff1a 1 本来嫌每次都sudo麻烦 xff0c 于是想将我的帐号设置为sudo不用输入密码 xff0c 但是编辑sudoer文件的时候 xff0c
  • LFS编译GCC GNU_USER_TARGET_OS_CPP_BUILTINS not declared in this scope

    gcc v 发现使用的gcc版本是4 7 安装gcc 4 4 or 4 3 xff0c 重新链接 xff0c 问题解决 apt get install gcc 4 4 g 43 43 4 4 进入 usr bin cd usr bin 建个
  • 将LFS系统通过grub装到优盘上启动

    最近在搞LFS xff0c 就是通过自己动手 xff0c 亲自编译源代码的方式 xff0c 建立自己的linux发行版 通过这个过程可以详细的深入了解linux内部的工作方式 xff0c 对理解操作系统的机制有很大的帮助 做这个项目 xff
  • kali linux 解决风扇猛转

    之前玩ubuntu的时候 xff0c 就感觉风扇猛转个不停 xff0c 之前是通过安装nvidia的闭源驱动 xff0c 然后再安装一个管理双显卡的工具解决的 xff0c 确实风扇及立马安静了下来 http www linuxidc com
  • PHP下十六位数值转IP地址

    PHP函数提供的long2ip和ip2long是IP和整形数值之间的转换 xff0c 没有和十六位数值的转换 xff0c 所以写下这个函数 function ntoip iphex len 61 strlen iphex 得到16进制字符串
  • linux系统备份命令

    tar cvpzf backup tgz exclude 61 proc exclude 61 lost 43 found exclude 61 backup tgz exclude 61 mnt exclude 61 sys exclud
  • 硬盘寻址能力的变换

    1 8G限制 硬盘寻址的限制 硬盘最初使用的寻址方法是柱面 磁头 扇区CHS xff08 Cylinder Head Sector xff09 xff0c 也称为3D模式 xff0c 是硬盘最早采用的寻址模式 通过分别指定柱面 磁头 扇区来
  • 关于动态new二维数组的问题

  • Linux 调节并自动保存屏幕亮度,重启有效

    用过几个Linux的发行版 xff0c 发现在笔记本上每次调节亮度后 xff0c 不能固定下来 xff0c 重新开机后就又恢复最大亮度了 之前一直用的是网上流行的方法 xff0c 即往etc rc local文件写入命令 xff0c 使其每
  • kali linux 安装Pidgin QQ

    首先 xff0c 需要kali开启PPA源 PPA xff08 Personal Package Archives xff1a 个人软件包档案 xff09 是Ubuntu Launchpad网络提供的一项服务 xff0c 允许个人用户上传软
  • 教你如何用Kali Linux制作windows 10安装优盘

    最近win10发布了 xff0c 看样子挺不错 虽然我一直用的是Linux xff0c 但是还是想体验一把win10 主要是尼玛我想看百度云里存放的教学视频 xff0c 但是里面的视频还需要特殊的播放器 xff0c 也是不得己 xff0c
  • kali linux安装搜狗输入法

    昨天安装了kali linux2 0 xff0c 感觉输入法没有以前好了 于是查资料安装搜狗输入法 xff0c 还是搜狗输入法好使 有几篇文章倒是谈到如何在kali上安装搜狗了 xff0c 但是一方面是文章太老了 xff0c 二是还得自己下
  • 关于android系统对AndroidManifest文件的解析机制

    最近在学习android的过程中一直在思考一个问题 xff0c 我们都知道 xff0c 在android的AndroidManifest xml 是每个android程序中必须的文件 它位于整个项目的根目录 xff0c 描述了package
  • Android对xml文件的解析

    今天阅读android sdk官方文档时 xff0c 看到这么一段话 xff1a 感觉深受启发 xff1a 1 android的图形界面内部逻辑结构是树形结构 xff0c 这个从xml文件的结构可以直观的看出来 如果我们要使用java代码来
  • kail linux 安装QQ

    腾讯QQ 下载地址 xff1a http www ubuntukylin com appli p lang 61 cn amp id 61 23 下载后解压得到wine qqintl文件夹 xff0c 里面有三个deb包 xff1a fon
  • ubuntu kylin下宽带拨号

    用pppoeconf这个命令 xff0c 一般来说 xff0c 里面已经安装好了的 按照提示过程处理即可 xff0c 要提供adsl用户名和密码 一般很多用户会配置成开机自动启动adsl xff0c 也可以手动 xff1a pon dsl
  • linux主机远程桌面

    利用xrdp 43 rdesktop可以实现
  • 把vim打造成C++ IDE

    目录 准备工作第一个插件pathogenauto pairsNERDTreeMiniBufExplorerctagstaglistomnicppcomplete ctagstaglistOmniCppCompleteSuperTab 最终的

随机推荐