10.15-10.18 iptables filter表案例 iptables nat表应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.15-10.18 iptables filter表案例 iptables nat表应用相关的知识,希望对你有一定的参考价值。

七周四次课(3月22日)

10.15 iptables filter表案例

10.16/10.17/10.18 iptables nat表应用

扩展
1. iptables应用在一个网段  技术分享图片http://www.aminglinux.com/bbs/thread-177-1-1.html
2. sant,dnat,masquerade   技术分享图片http://www.aminglinux.com/bbs/thread-7255-1-1.html
3. iptables限制syn速率  技术分享图片http://www.aminglinux.com/bbs/thread-985-1-1.html   技术分享图片http://jamyy.us.to/blog/2006/03/206.html



10.15 iptables filter表小案例


技术分享图片

总结

 查看iptables规则:iptables -nvL

 iptables -F 清空规则


 service iptables save 保存规则 

加粗,保存在/etc/sysconfig/iptables,重启后,会调用此文件的规则。


 iptables -t nat //-t指定表

默认不加-t会指定filter表


 iptables -Z  可以把计数器清零

 


 iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

把规则放到最后面

INPUT是进来的包,

-s 指定源ip 

-p 指定它的协议可以是tcp,udp 

--sport 源端口

--dport 目标端口

-d 目标地址

-j 行为,DROP,REJECT,ACCEPT


 iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP

把规则放到最前面,最前面的会被优先加载,匹配。

-I -A -D 紧跟着链的名字,可以是INPUT,OUTPUT或者是FORWARD


 iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT



 iptables -nvL --line-numbers

列出规则的编号,


 iptables -D INPUT 1

根据编号删除规则


 iptables -P INPUT DROP

指定链的默认策略,慎重操作,否则会影响远程连接状态。



技术分享图片

小案例 

需求:把80端口 22端口 21端口 放行,22端口指定IP段,只有这IP段的IP访问才可以访问到,其他段访问 拒绝。

 iptables小案例

 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 

 

上述案例,添加ipt变量,$ipt就是使用ipt的变量。以后需要这种需求,可以模仿此案例去写脚本 加粗高亮。状态一定要写,否则会被DROP掉。


 icmp示例


 iptables -I INPUT -p icmp --icmp-type 8 -j DROP

这个8指的是能在本机ping通其他机器,而其他机器不能ping到本机。

其实这里相当于一个禁ping操作。



10.16 iptables nat表应用(上)



技术分享图片


准备工作,

2台虚拟机,1号2号

1号机操作

添加一块网卡

虚拟机设置-添加-选中网络适配器-下一步-保持默认-下一步

技术分享图片

技术分享图片

切记选择LAN区段


2号机操作

首先开机禁用网卡

添加网卡(操作和1号机添加网卡一样,LAN区段也是选择刚刚设定的LAN区段)


上面的操作最好在关机之后操作。


1号机的网络状态。

[[email protected] ~]#    ifconfig 

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.189.128  netmask 255.255.255.0  broadcast 192.168.189.255

        inet6 fe80::243c:86d7:d85e:224d  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:15:53:53  txqueuelen 1000  (Ethernet)

        RX packets 815  bytes 78496 (76.6 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 587  bytes 83961 (81.9 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.189.150  netmask 255.255.255.0  broadcast 192.168.189.255

        ether 00:0c:29:15:53:53  txqueuelen 1000  (Ethernet)


ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        ether 00:0c:29:15:53:5d  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 55  bytes 10362 (10.1 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1  (Local Loopback)

        RX packets 72  bytes 5744 (5.6 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 72  bytes 5744 (5.6 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


设置ens37的ip 有好几种方法,

1,把ens33的网络配置文件复制多一份,改名ens37,慎记更改device name ip mac地址(可以删掉),等等

2,临时配置,命令配置:[[email protected] ~]# ifconfig ens37 192.168.100.1/24 

#ifconfig

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.100.1  netmask 255.255.255.0  broadcast 192.168.100.255

        inet6 fe80::20c:29ff:fe15:535d  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:15:53:5d  txqueuelen 1000  (Ethernet)


2号机操作

因为ens33刚刚已在VMware做设置禁掉了,所以需要再在系统上命令禁掉ens33的网卡

#ifdown ens33


设定ens37 IP

# ifconfig ens37 192.168.100.100/24 

检查一次配置

尝试ping 1号主机的37的IP 192.168.100.1

ping通状态。ok



10.17 iptables nat表应用(中)


需求1:可以让B机器连接外网

 1号机机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward


不能上外网的原因是,没有开启路由转发。

先查看内核参数,默认是0,0表示没有开启内核路由转发

[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward

0

打开端口转发,1值表示开启,利用echo赋值

[[email protected] ~]# echo "1" > !$

echo "1" > /proc/sys/net/ipv4/ip_forward

[[email protected] ~]# !cat

cat /proc/sys/net/ipv4/ip_forward

1


 A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE 

[[email protected] ~]# iptables -t nat -nvL

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain OUTPUT (policy ACCEPT 2 packets, 216 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain POSTROUTING (policy ACCEPT 2 packets, 216 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    0     0 MASQUERADE  all  --  *      ens33   192.168.100.0/24     0.0.0.0/0           


此规则就是为了让A可以上外网,MASQUERADE表示伪装。


B上操作

B上设置网关为192.168.100.1

#route add default gw 192.168.100.1

ping A电脑的网关192.168.189.1 ping通。


设置DNS可以ping通外网。

[[email protected] ~]# vi /etc/resolv.conf


# Generated by NetworkManager

nameserver 114.114.114.114


在PC上ping B主机192.168.100.100 ping不通


其实这过程就相当于一台路由器的运作原理,A机器是路由器,B与C是连接路由器的用户。




10.18 iptables nat表应用(下)


截图 


 需求2:C机器(物理机PC)只能和A通信,让C机器可以直接连通B机器的22端口


C远程登录B

C不能直接连接B,但是C可以连接A(因为C可以用Xshell远程登录A的22端口)。

如果C要连接B,需要在B上做一个端口映射,但是不能使用22端口(因为A已经使用了),必须使用其他端口。比如映射1122端口。


A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward

此项如果之前做过了,无需再开启,或者先#cat一下文档,如果是1就无需再做此步骤。


A上执行第一条规则

iptables -t nat -A PREROUTING -d 192.168.189.128 -p tcp --dport 1122 -j DNAT --to 

-d的目标ip是A上的IP

--dport 定义目标端口1122

此规则的大意是:把进去的包做一个端口转发。

执行这一步之前,首先删掉之前所建立的规则。

[[email protected] ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE 

[[email protected] ~]# iptables -t nat -nvL

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination    



第二条规则iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.189.128

这个是回来的包,192.168.189.128.

#iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.189.128


做完设置后,在Xshell上进行远程登录,添加主机是192.168.189.128 端口1122 

完成跳转B上。


但是B的机器的IP不会更改,此时还是192.168.100.100


测试外网也成功。


以上是关于10.15-10.18 iptables filter表案例 iptables nat表应用的主要内容,如果未能解决你的问题,请参考以下文章

7.13 10.15-10.18

7.13 10.15-10.18

参会|人工智能“图神经网络与知识图谱核心技术及应用培训班”(10.15-10.18,北京,实地视频同步教学)

iptables防火墙

iptables常用语法与案例

FIL产量减少,FIL还值得挖矿吗?FIL能涨到多少?