10.15 iptables filter表案例
iptables小案例 (80端口、22端口(指定IP段)、21端口放行)
vi /usr/local/sbin/iptables.sh //加入如下内容
#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
icmp示例
iptables -I INPUT -p icmp --icmp-type 8 -j DROP
脚本实例
[root
@test ~]# vim /usr/local/sbin/iptables.sh
#! /bin/bash
ipt="/usr/sbin/iptables" (脚本中命令需要写绝对路径(环境变量导致命令无法执行),这里定义了变量来定义命令全局路径)
$ipt -F (清空之前的规则,
但是实际工作中不能随意清空)
(这里没有-F去定义表,这里默认是filter表)
$ipt -P INPUT DROP (进入的数据全部限制掉)
$ipt -P OUTPUT ACCEPT(出去的数据开放)
$ipt -P FORWARD ACCEPT(转发的数据开放)
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(进入的数据指定状态,目的是各个数据包相互顺利连接,针对状态放行,-m state --state,RELATED边缘状态建立连接后还有额外的连接,ESTABLISHED保持连接)
-m state --state <NEW,ESTATBLISHED,INVALID,RELATED> ##指定匹配哪种状态
接受已经建立连接的或由已经建立的连接所建立的新连接的TCP连接(状态防火墙能识别TCP或者UDP会话非状态防火墙只能根据端口识别,不能识别会话)
– INVALID: 无效的封包,例如数据破损的封包状态,该包不匹配于任何连接,通常这些包被DROP
–ESTABLISHED:已经联机成功的联机状态;该包属于某个已经建立的连接。
–NEW:想要新建立联机的封包状态;该包想要开始一个新的连接(重新连接或连接重定向)
–RELATED:该包是属于某个已经建立的连接所建立的新连接。举例:FTP的数据传输连接和控制连接之间就是RELATED关系。
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT (网段访问22端口)
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT (80端口数据包放行)
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
![012301da025deaab9814c9bd72d76d2cac4.jpg](https://i-blog.csdnimg.cn/blog_migrate/07d858df80e57a69d156ecb5df6dd84a.jpeg)
执行脚本:[root
@test ~]# sh /usr/local/sbin/iptables.sh
[root
@test ~]# iptables -nvL
![75ba6109a7135ae771dea196fe91cd146fb.jpg](https://i-blog.csdnimg.cn/blog_migrate/04c1aab8078b36dfb32f1be52952c128.jpeg)
icmp 禁ping功能,本机ping外部可以通,外部无法ping通本机 禁掉icmp 8种状态
[root
@test ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
![22238583b6329e66b477555a56101cd6275.jpg](https://i-blog.csdnimg.cn/blog_migrate/54217b9eacbaa16d8dd6add8dfbefd5e.jpeg)
10.16/10.17/10.18 iptables nat表应用
nat表应用
A机器两块网卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
需求1:可以让B机器连接外网
A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward
A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
B上设置网关为192.168.100.1
需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口
A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward
A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130
B上设置网关为192.168.100.1
实际操作
A服务器ens32外网 ens34 192.168.1.3 B机器ens34 192.1768.1.2
A机器和B机器设置临时IP时操作[root
@test ~]# ifconfig ens34 192.168.1.3/24
内网互通
A机器
![b2294ac5bbc435f183a07b3a2f4d608cf2b.jpg](https://i-blog.csdnimg.cn/blog_migrate/7c609ff2b965b386273a2044a4d50898.jpeg)
B机器
![b2294ac5bbc435f183a07b3a2f4d608cf2b.jpg](https://i-blog.csdnimg.cn/blog_migrate/7c609ff2b965b386273a2044a4d50898.jpeg)
1.可以让B机器连接外网
A机器变为路由器
A机器打开路由转发,修改内核参数 /proc/sys/net/ipv4/ip_forward默认为0,没有开启端口转发
[root@test ~]# echo "1">/proc/sys/net/ipv4/ip_forward
[root@test ~]# cat /proc/sys/net/ipv4/ip_forward
1
NAT表增加规则(让内网网段上网)
[root@test ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens34 -j MASQUERADE
[root@test ~]# iptables -t nat -nvL
![3f3c6d22e424696be857a5085986056b942.jpg](https://i-blog.csdnimg.cn/blog_migrate/3a04fe31dac24963e1978a8a06593fdf.jpeg)
B机器设置网关
查看网关
[root@test ~]# route -n
设置网关(设置网关为A机器的内网)
![60a3ab0deb674ff76e6c53ae92f82235319.jpg](https://i-blog.csdnimg.cn/blog_migrate/a2c8dfa4693085be373951a5437eaeae.jpeg)
实现B机器出外网通信
![9018060aeb367ead20a0ed387f5a4057392.jpg](https://i-blog.csdnimg.cn/blog_migrate/0d1e4d6d0994be57debdf91566cf5299.jpeg)
设置DNS
![925328803d1a31a2d769f805a0130c0daed.jpg](https://i-blog.csdnimg.cn/blog_migrate/599a48a1bf175d5feb3ebedee7fa65e8.jpeg)
![bdd655197467d97e5267401250a55074681.jpg](https://i-blog.csdnimg.cn/blog_migrate/671214173e745461b1f450508254f1dd.jpeg)
2.端口映射
通过A机器的端口映射去内网服务器的远程端口映射
A机器变为路由器
A机器打开路由转发,修改内核参数
/proc/sys/net/ipv4/ip_forward默认为0,没有开启端口转发
[root@test ~]# echo "1">/proc/sys/net/ipv4/ip_forward
[root@test ~]# cat /proc/sys/net/ipv4/ip_forward
1
删除原规则
[root@test network-scripts]# iptables -t nat -D POSTROUTING -s 192.168.1.0/24 -o ens34 -j MASQUERADE
增加规则
1.进来的包目标IP指向1122,端口转发到内网的远程地址和远程端口
[root@test network-scripts]# iptables -t nat -A PREROUTING -d 122.222.222.222 -p tcp --dport 1122 -j DNAT --to 192.168.1.2:1222
2.出来的包
iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130
B机器设置网关
查看网关
[root@test ~]# route -n
设置网关(设置网关为A机器的内网)
![f209f42c18433138ede27b27803ce71eadf.jpg](https://i-blog.csdnimg.cn/blog_migrate/24b2300fcf53adcfc617f685293cdfce.jpeg)