海运的博客

Iptables/ROS做流量控制QOS的一些理解

发布时间:November 2, 2012 // 分类:Iptables,ROS // No Comments

1.关于Iptables链PREROUTING和POSTROUTING:

#https://www.haiyun.me
PREROUTING在包进入防火墙之后,DNAT之前
POSTROUTING是在DNAT后,SNAT之前

2.在哪里标记,怎么标记上传和下载。

PREROUTING可以根据进入端口为内网或外网标记上传和下载,或根据源地址为本地、非本地标记上传、下载;
POSTROUTING可以根据发出端口、源地址标记上传;
FORWARD可以根据进入端口为内网或外网标记上传和下载,或根据源地址、目标地址都可以。

3.在哪里进行流量整形:
3.1.使用lan和wan:

lan可根据目标地址进行下载限制,正常识别。
wan根据源地址进行上传限制,在SNAT后,源地址已改变,不能正常限制流量。

3.2.使用虚拟接口,ROS使用global in和global-out,Iptables使用IMQ

global-in在PREROUTING、DNAT后,可按目标地址限制下载
global-out在POSTROUTING后,SNAT前,可按源地址限制上传。

4.使用TC限制特定IP下载、上传的问题:
4.1.限制上传使用MARK标记:

iptables -t mangle -I POSTROUTING -s 192.168.1.16 -j MARK --set-mark 27

4.2.限制下载使用U32标记:

tc filter add dev imq1 parent 1:0 protocol ip prio 4 u32 match ip dst 192.168.1.16 flowid 1:24

5.标记mark-connection和mark-packet区别
关于Iptables/ROS进行流控的一些理解,如有误请更正。

Iptables下MSS数据调整模块TCPMSS使用

发布时间:October 5, 2012 // 分类:Iptables // No Comments

为达到最佳的传输效能TCP在建立连接时会协商MSS(最大分段长度,一般为1460字节)值,即MTU(最大传输单元,不超过1500字节)减去IP数据包包头20字节和TCP数据包头20字节,取最小的MSS值为本次连接的最大MSS值,Iptables下TCPMSS模块即用来调整TCP数据包中MSS数值。
在ADSL拨号环境中由于PPP包头占用8字节,MTU为1492字节,MSS为1452字节,如不能正确设置会导致网络不正常,可以通过TCPMSS模块调整MSS大小。
TCPMSS使用参数:

#https://www.haiyun.me
--set-mss value #设置特定MSS值
--clamp-mss-to-pmtu #根据MTU自动调整MSS

应用示例:

iptables -t mangle -I POSTROUTING -o pppoe-wan -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
#自动调整经pppoe-wan接口发出的TCP数据MSS

Linux下用arptables防arp攻击

发布时间:August 6, 2012 // 分类:Iptables // No Comments

Linux下网络层防火墙iptables很强大,链路层也有类似的防火墙arptables,可针对arp地址进行限制,防止ARP网关欺骗攻击,再配合静态绑定MAC向网关报告正确的本机MAC地址,有效解决ARP攻击问题。
Centos5安装:

#https://www.haiyun.me
wget http://superb-sea2.dl.sourceforge.net/project/ebtables/arptables/arptables-v0.0.3/arptables-v0.0.3-4.tar.gz
tar zxvf arptables-v0.0.3-4.tar.gz 
cd arptables-v0.0.3-4
make
make install

arptables规则设置:

arptables -F
arptables -P INPUT ACCEPT
#默认策略
arptables -A INPUT --src-ip 192.168.1.1 --src-mac 7A:31:14:42:10:01 -j ACCEPT
#允许本网段特定MAC可进入,且IP与MAC相符
arptables -A INPUT --src-mac ! 74:8E:F8:53:DC:C0 -j DROP
#拒绝非网关MAC
arptables -A INPUT --src-ip ! 192.168.1.1 -j DROP
#拒绝非网关IP

保存规则并开机加载:

iptables-save > /etc/sysconfig/arptables
/etc/init.d/arptables save
chkconfig arptables on

规则保存后重新加载会出错,去除以下文件内-o any字段。

/etc/sysconfig/arptables 

Iptables模块TTL应用禁止二级路由及禁止tracert被跟踪

发布时间:August 5, 2012 // 分类:Iptables // No Comments

TTL即Time To Live,用来描述数据包的生存时间,防止数据包在互联网上一直游荡,每过一个路由减1,TTL为1时丢弃数据包并返回不可达信息。
Iptables TTL模块可以修改收到、发送数据的TTL值,这模块很有趣,可以实现很多妙用。
TTL使用参数:

https://www.haiyun.me
--ttl-set #设置TTL的值
--ttl-dec #设置TTL减去的值
--ttl-inc #设置TTL增加的值

应用示例:
禁止被tracert跟踪到,traceroute跟踪时首先向目标发送TTL为1的IP数据,路由收到后丢弃数据包并返回不可达信息,以此递增直到目标主机为止。

iptables -A INPUT -m ttl --ttl-eq 1 -j DROP
#禁止TTL为1的数据包进入
iptables -A FORWARD -m ttl --ttl-eq 1 -j DROP
#禁止转发TTL为1的数据

禁止二级路由:

iptables -t mangle -A PREROUTING -i pppoe-wan -j TTL --ttl-set 2
#进入路由数据包TTL设置为2,二级路由可接收数据不转发。

Centos编译IPID模块配置TTL防网络尖兵

发布时间:July 30, 2012 // 分类:Iptables // No Comments

Centos自带iptables TTL模块,IPID源码下载地址:http://bbs.chinaunix.net/thread-2102211-1-1.html

#https://www.haiyun.me
yum -y install kernel-devel
wget http://ftp.netfilter.org/pub/iptables/iptables-1.3.5.tar.bz2
tar jxvf iptables-1.3.5.tar.bz2
ln -s iptables-1.3.5 /usr/src/iptables

编译安装IPID:

cd iptables-ipid-2.1
sed -i 's/new_ipid\[i\]/new_ipid\[id\]/g' ipt_IPID.c
make
cp ipt_IPID.ko /lib/modules/2.6.18-308.11.1.el5/kernel/net/ipv4/netfilter/
chmod 744 /lib/modules/2.6.18-308.11.1.el5/kernel/net/ipv4/netfilter/ipt_IPID.ko
cp libipt_IPID.so /lib/iptables/
depmod -a
modprobe ipt_IPID

使用参数:

--ipid-pace [number] 设置每次增加的步调值,如果为0,则数据包的IPID字段应该为一个固定的值。
--ipid-choatic 0 设置随机IPID。0仅仅是填充参数作用。

应用示例:

iptables -t mangle -A PREROUTING  -i pppoe-wan -j TTL --ttl-inc 1
#限制2级路由
iptables -t mangle -A POSTROUTING -o pppoe-wan -j TTL --ttl-set 128
iptables -t mangle -A POSTROUTING -o pppoe-wan -j IPID --ipid-pace 1
#这样路由本机和下级电脑发的数据都修改TTL和IPID信息,修改TTL会导致tracert跟踪不正常。
#如需不影响路由本机tracert可在FORWARD链修改数据包信息
分类
最新文章
最近回复
  • crowjin: 你确定这能过滤??不是所有请求都返回空地址::?
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了