Iptables下TCP标志tcp-flags匹配模块使用
发布时间:November 12, 2012 // 分类:Iptables // No Comments
Iptables可通过匹配TCP的特定标志而设定更加严谨的防火墙规则,tcp-flags参数使用如下:
-p tcp --tcp-flags
#匹配指定的TCP标记,有两个参数列表,列表内部用逗号为分隔符,两个列表之间用空格分开。
#第一个列表为要检查的标志,第二个列表为要匹配的标志
#匹配数据包时第二个列表的值为1且第一个列表中的其它值要为0
#可用以下标志:
SYN、ACK、FIN、RST、URG、PSH、ALL、NONE
#ALL是指选定所有的标记,NONE是指未选定任何标记。
--syn
#SYN标志设置为1,其它标志未设置,相当于SYN为1且RST,ACK,FIN都为0
-p tcp --tcp-flags SYN,RST,ACK,FIN SYN.
很多人在使用tcp-flags匹配时遇到以下错误:
iptables v1.4.6: --tcp-flags requires two args.
原因是只定义了参数检查,未设置参数匹配,ROS下使用一组参数就可以了,正确使用tcp-flags应用示例:
防止Xmas扫描:
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
防止TCP Null扫描:
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
拒绝TCP标记为SYN/ACK但连接状态为NEW的数据包,防止ACK欺骗。
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
Iptables数据包、连接标记模块MARK/CONNMARK使用
发布时间:November 7, 2012 // 分类:Iptables // No Comments
MARK标记用于将特定的数据包打上标签,供Iptables配合TC做QOS流量限制或应用策略路由。
看看和MARK相关的有哪些模块:
ls /usr/lib/iptables/|grep -i mark
libxt_CONNMARK.so
libxt_MARK.so
libxt_connmark.so
libxt_mark.so
其中大写的为标记模块,小写的为匹配模块,它们之间是相辅相成的。
MARK标记数据包:
#如将所有TCP数据包标记为1
iptables -t mangle -A PREROUTING -p tcp -j MARK --set-mark 1
mark匹配数据包:
#匹配标记1的数据并保存数据包中的MARK到连接中
iptables -t mangle -A PREROUTING -p tcp -m mark --mark 1 -j CONNMARK --save-mark
#将非空mark数据包保存到连接中
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j CONNMARK --save-mark
CONNMARK标记连接:
iptables -j CONNMARK --help
--set-mark #标记连接
--save-mark #保存数据包中的MARK到连接中
--restore-mark #将连接中的MARK设置到同一连接的其它数据包中
iptables -t mangle -A PREROUTING -p tcp -j CONNMARK --set-mark 1
connmark匹配连接:
iptables -m connmark --help
--mark value #匹配连接的MARK的标记
#匹配连接标记1并将连接中的标记设置到数据包中
iptables -t mangle -A PREROUTING -p tcp -m connmark --mark 1 -j CONNMARK --restore-mark
应用案例:Iptables标记数据策略路由多WAN带宽叠加并负载均衡。
其它可参考:
https://blog.csdn.net/bytxl/article/details/7918403
https://blog.csdn.net/dog250/article/details/78301259
OpenWRT/Linux多WAN带宽叠加使用iptables标记策略路由负载均衡
发布时间:November 7, 2012 // 分类:OpenWrt // 18 Comments
之前有介绍OpenWrt下ADSL多拨使用nexthop负载均衡,负载不是很理想,本次使用iptable标记数据包并配合策略路由实现负载均衡。
WAN1数据标记:
iptables -t mangle -N WAN1
#标记数据包
iptables -t mangle -A WAN1 -j MARK --set-mark 1
#把数据包中的mark设置到整个连接中
iptables -t mangle -A WAN1 -j CONNMARK --save-mark
WAN2数据标记:
iptables -t mangle -N WAN2
iptables -t mangle -A WAN2 -j MARK --set-mark 1
iptables -t mangle -A WAN2 -j CONNMARK --save-mark
把已存在连接中的mark设置到数据包中,实现同个连接同个宽带IP出:
iptables -t mangle -N RESTORE
iptables -t mangle -A RESTORE -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m state --state ESTABLISHED,RELATED -j RESTORE
使用NTH模块公平分发新数据包到WAN1和WAN2:
iptables -t mangle -A PREROUTING -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j WAN1
iptables -t mangle -A PREROUTING -m state --state NEW -m statistic --mode nth --every 2 --packet 1 -j WAN2
设置路由表:
cat /etc/iproute2/rt_tables
#https://www.haiyun.me
255 local
254 main
253 default
0 unspec
252 WAN1
251 WAN2
设置路由表默认路由:
ip route flush table WAN1
ip route add table WAN1 default via 2.2.2.2 dev ppp0
ip route flush table WAN2
ip route add table WAN2 default via 1.1.1.1 dev ppp1
根据iptables标记应用路由:
ip rule del from all fwmark 2 2>/dev/null
ip rule del from all fwmark 1 2>/dev/null
ip rule add fwmark 1 table my_wan0
ip rule add fwmark 2 table my_wan1
ip route flush cache
禁用源地址验证:
cat /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 0
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进行流控的一些理解,如有误请更正。
分类
- Apache (13)
- Nginx (45)
- PHP (86)
- IIS (8)
- Mail (17)
- DNS (16)
- Cacti (14)
- Squid (5)
- Nagios (4)
- Puppet (7)
- CentOS (13)
- Iptables (23)
- RADIUS (3)
- OpenWrt (41)
- DD-WRT (1)
- VMware (9)
- 网站程序 (2)
- 备份存储 (11)
- 常用软件 (20)
- 日记分析 (10)
- Linux基础 (18)
- 欧诺代理 (0)
- Linux服务 (18)
- 系统监控 (4)
- 流量监控 (7)
- 虚拟化 (28)
- 伪静态 (2)
- LVM (3)
- Shell (18)
- 高可用 (2)
- 数据库 (16)
- FreeBSD (3)
- 网络安全 (25)
- Windows (35)
- 网络工具 (22)
- 控制面板 (3)
- 系统调优 (10)
- Cisco (3)
- VPN (6)
- ROS (20)
- Vim (14)
- KMS (4)
- PXE (2)
- Mac (1)
- Git (1)
- PE (1)
- LNS (2)
- Xshell (7)
- Firefox (13)
- Cygwin (4)
- OpenSSL (9)
- Sandboxie (3)
- StrokesPlus (1)
- AutoHotKey (4)
- Total Commander (3)
- WordPress (3)
- iMacros (6)
- Typecho (2)
- Ollydbg (1)
- Photoshop (1)
- 正则 (3)
- Debian (3)
- Python (8)
- NoSQL (6)
- 消息队列 (4)
- JS (7)
- Tmux (3)
- GO (7)
- HHVM (2)
- 算法 (1)
- Docker (2)
- PT (15)
- N1 (16)
- K2P (6)
- LUKS (4)
最新文章
- 光猫拨号ImmortalWrt/OpenWRT路由获取ipv6遇到的问题
- php-fpm错误error_log日志配置
- debian-12/bookworm安装mariadb10.3和mysql5.6
- smokeping主从配置及遇到的问题
- openwrt/linux使用tcpdump/nflog ulogd记录iptables日志
- tmux bash shell自动保存history
- ImmortalWrt/OpenWRT为guest wifi网络配置ipv6 nat6
- PVE更新upgrade遇到The following packages have been kept back
- openwrt/immortalwrt修改odhcpd ipv6 preferred_lifetime和valid_lifetime
- golang版本udpxy iptv rtp多播转http单播
最近回复
- opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
- liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
- 海运: 不好意思,没有。
- zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
- 海运: 恩山有很多。
- swsend: 大佬可以分享一下固件吗,谢谢。
- Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
- 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
- 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
- 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...