## iptables命令、规则、参数详解
## 表 (table)
包含4个表:
4个表的优先级由高到低:raw-->mangle-->nat-->filter
* raw---RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip\_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了.
* filter---这个规则表是预设规则表,拥有 INPUT、FORWARD 和 OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的理动作
* net----此规则表拥有prerouting和postrouting两个规则链, 主要功能为进行一对一、一对多、多对多等网址转译工作(SNATDNAT)
* mangle--此规则表拥有prerouting、FORWARD、postrouting三个规则链,除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(ITL、TOS)或者是设定MARK(将封包作记号,以进行后续的过滤)这时就必须将这些工作定义在mangles规则表中
## 常用命令
```
常用命令:
-A 追加规则-->iptables -A INPUT
-D 删除规则-->iptables -D INPUT 1(编号)
-R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)
-I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位
-L 查看规则-->iptables -L INPUT 列出规则链中的所有规则
-N 新的规则-->iptables -N allowed 定义新的规则
```
## 通用参数
```
通用参数:
-p 协议 例:iptables -A INPUT -p tcp
-s源地址 例:iptables -A INPUT -s 192.168.1.1
-d目的地址 例:iptables -A INPUT -d 192.168.12.1
-sport源端口 例:iptables -A INPUT -p tcp --sport 22
-dport目的端口 例:iptables -A INPUT -p tcp --dport 22
-i指定入口网卡 例:iptables -A INPUT -i eth0
-o指定出口网卡 例:iptables -A FORWARD -o eth0
```
```
-j 指定要进行的处理动作
常用的ACTION:
DROP:丢弃
REJECT:明示拒绝
ACCEPT:接受
SNAT基于原地址的转换
source--指定原地址
```
比如我们现在要将所有192.168.10.0网段的IP在经过的时候全都转换成172.16.100.1这个假设出来的外网地址:
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1(外网有效ip)
这样,只要是来自本地网络的试图通过网卡访问网络的,都会被统统转换成172.16.100.1这个IP.
MASQUERADE(动态伪装)--家用带宽获取的外网ip,就是用到了动态伪装
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
DNAT目标地址转换
destination-指定目标地址
iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.2
10.18访问80端口转换到100.2上
MASQUERADE:源地址伪装
REDIRECT:重定向:主要用于实现端口重定向
MARK:打防火墙标记的
RETURN:返回 在自定义链执行完毕后使用返回,来返回原规则链。
构建iptable策略的最后一步实在linux内核中启用ip转发
### forwarding
echo "\[+\] Enabling Ip forwarding..."
echo 1 > /proc/sys/net/ipv4/ip\_forward
## 测试用到的命令
hping
nc
- 写在前面
- linux命令行
- 基础篇
- 1.SSH连接工具
- 2.查看系统版本信息
- 3.查看IP地址
- 4.查看cpu信息
- 5.查看内存磁盘信息
- 6.文件上传下载
- 7.linux中查找文件(find)
- 8.修改root账号密码
- 9.通过进程号查看端口
- 10.校验MD5值
- 11.Linux命令之seq
- 12.Linux命令之corntab
- 13.linux命令之awk
- 进阶篇
- 查看防火墙是否开启
- linux创建新的用户
- 更改文件的用户组
- 查找JAVA_HOME路径
- Linux主机时间同步
- 高CPU排查-个人总结
- Linux查看GPU性能
- 文件排序工具sort
- sed
- grep
- 实战篇
- 1.Linux基线
- 2.iptables学习
- 3.Tcpdump抓包命令
- 4.CentOS7更换镜像源
- shell脚本篇
- 1.Shell脚本速查手册
- 2.Shell中获取取昨天和多天前日期
- 3.rsync删除文件
- 4.nginx自动化安装脚本
- 5.后台启动服务
- 6.备份文件保留5天
- 数据库
- MySQL数据库备份命令
- ES数据库备份
- filebeat工具
- packetbeat工具
- MySQL数据库中删除表
- Docker容器
- 1.安装docker容器
- 2.docker容器的使用
- 3.docker overlay2 是存放什么的
- 4.docker删除已停止的容器
- 5.docker网卡的IP地址修改
- Ubuntu容器下载vim,curl命令
- docker磁盘占用瞬间变大问题解决
- Python学习
- 安装python环境
- Python 把代码编译成pyc文件