一、什么是iptables?
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。
二、iptables常用命令管理
1.开启服务及查看
做实验前第一步关闭firewall服务,开启iptables服务
systemctl stop firewalld
systemctl disabled iptables
systemctl start iptables
查看策略:
刷新策略:iptables -F
重启之后又能看到:
service iptables save
保存策略
2.添加删除更改命令
(1)
iptables -nL 查看
iptables -N westos #新建连
iptables -E westos HAHA #链改名为HAHA
iptables -X HAHA 删除HAHA链
(2)
iptables -P INPUT DROP 修改input默认策略为drop,当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理
iptables -R INPUT 3 -j DROP 将input第3条规则改为drop
iptables -D INPUT 3 #删除链表第3条规则
iptables -D INPUT -s 172.25.254.70 -j DROP #按内容删除
iptables -A INPUT -s 172.25.254.55 -p tcp --dport 23 -j REJECT #添加规则,禁止55主机ssh连接当前主机
iptables -A INPUT -s 172.25.254.55 -p tcp --dport 23 -j DROP #访问拒绝,无提示
iptables -I INPUT 2 -p tcp --dport 23 -j DROP #插入到第二条策略
(3)
iptables -F 刷新策略
iptables -t nat -F 清空nat策略,-F仅仅是清空链中规则,并不影响-P设置的默认规则
iptables -t nat -nL 查看nat策略
iptables -t nat -L PREROUTING 查看nat表PREROUTING链的规则
(1)
(2)
增加链
删除策略:
插入策略:
(3)nat策略查看
三、DNAT和SNAT转换
1.源地址转换
本实验条件:
(1)真机:172.25.254.70
(2)desktop:
eth0:172.25.254.113
eth1:172.25.70.113
(3)server:172.25.70.213
正常情况下,server ping不同真机,因为不是同一个网段。
在双网卡desktop上:
1.首先查看net.ipv4.ip_forward等于多少,默认为0
sysctl -a | grep ip_forward #查看命令
2.设置为1
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
:wq
3.再次查看:
systecl -p
地址转换命令:
iptables -t nat -A POSTROU它TING -o eth0 -j SNAT --to-source 172.25.254.113 #来源转换
iptables -t nat -nL #查看
打开net.ipv4.ip_forward=1
开始地址转换:
server测验:
原本都ping不同:
現在可以ssh远程连接真机:
在真机上看,显示的不是server172.25.70.213连的,而是desktop双网卡中的172.25.254.113连的:
2.目的地地址转换
desktop:
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 172.25.70.213
真机测验:
ssh连的172.25.254.113(desktop),最后跳转到server172.25.70.213,在server上w -i,看到的是真机连的。