三十iptables filter表小案例iptables nat表应用

Posted

tags:

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

三十二、iptables filter表小案例、iptables nat表应用

一、iptables filter表小案例

需求:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.188.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。

这个需求写一个脚本,内容如下:

# vi /usr/local/sbin/iptables.sh

#! /bin/bash

ipt="/usr/sbin/iptables"      //ipt:定义了一个变量,应写绝对路径。

$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.93.0/24 -p tcp --dport 22 -j ACCEPT    想放行的源IP和24端口

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT     下面就是加端口

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

写完后保存,直接运行/bin/sh/usr/local/sbin/iptables.sh即可。

sh命令:执行命令从标准输入读取或从一个文件中读取。读取文件里的内容来执行。

# sh /usr/local/sbin/iptables.sh

# iptables -nvL

Chain INPUT (policy DROP 0 packets, 0 bytes)

pkts bytes target     prot opt in     out     source               destination        

  30  1980 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

   0     0 ACCEPT     tcp  --  *      *       192.168.188.0/24     0.0.0.0/0            tcp dpt:22

   0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

   0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21

-m state --state RELATED,ESTABLISHED -j ACCEPT

作用:为了让下面的数据包和端口更顺利的相互连接。

RELATED:编译员。

ESTABLISHED:保持连接。

如果想开机启动时初始化防火墙规则,

则需要在/etc/rc.d/rc.local中添加一行/bin/sh /usr/local/sbin/iptables.sh。

icmp案例

# iptables -I INPUT -p icmp --icmp-type 8 -j DROP  增加这条规则  -I

# iptables -D INPUT -p icmp --icmp-type 8 -j DROP    删除这条规则  -D

--icmp要和-p icmp一起使用,后面指定类型编号。8指的是能在本机ping通其他机器,而其他机器不能ping通本机。(牢记)

二、iptables nat表应用

需求1:两台机器A和B。A的ens33能连外网,ens37仅是内网,B只有ens37,和A的ens37可以通信互联。

准备工作:进虚拟机设置,将A和B两台机器都添加一个网卡,给第二个网卡设置一个LAN区段,区段名字自定义即可,将A和B的第2个网卡都连接同一个LAN区段。

LAN区段:相当于是一台内网的交换机,Windows连不上。

连上同一台交换机两台机器就能相互通信了。

技术分享图片技术分享图片

技术分享图片技术分享图片

# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37

# vi /etc/sysconfig/network-scripts/ifcfg-ens37

给第二个网卡设置一个IP,修改NAME,DEVICE,IPADDR即可。

NAME=ens37

DEVICE=ens37

ONBOOT=yes

IPADDR=192.168.100.1           这个IP的网段和主网卡的网段不要一样的。

这样也可以改,但只是临时生效,重启就没了:# ifconfig ens37 192.168.93.133/24

B机器由于不能连外网了,就只能进虚拟机操作,虽然停用了ens33,为了保险,ifdown掉它。然后给同样拷贝ens33给ens37设置个IP。

NAME=ens37

DEVICE=ens37

ONBOOT=yes

IPADDR=192.168.100.10

然后可以先ping一下A机器的ens37网卡,若不通,先ping一下自己,看网卡连接了没有(mii-tool ens33),检查一下两台机器的IP。

# echo "1" > /proc/sys/net/ipv4/ip_forward  打开路由转发功能,该文件默认是0

# iptables -t nat -A POSTROUTING -s 192.168.98.1/24 -o ens33 -j MASQUERADE

-s想要给能连外网的IP。-o出口的有外网的网卡名。

到B机器上设置一个网关。

# route add default gw 192.168.98.134(或133,为默认网关,不可随意设置)

# route del default gw 192.168.98.134可以删除网关

可以route -n查看到。此时这台B机器就能ping通外网了。加个DNS就能ping通DNS和域名了。

# vi /etc/resolv.conf

nameserver 119.29.29.29

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

让A机器做一个跳转作用,这就叫端口映射。把B机器的22端口映射出来,A机器的外网22端口是有的状态,比如映射成1122,实际上就是访问1122端口的时候就是在访问B机器的22端口。

1.打开A机器的端口转发。

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

# iptables -t nat -D POSTROUTING -s 192.168.98.1/24 -o ens33 -j MASQUERADE

先删掉之前的规则,以免影响后面的操作。

A上执行:# iptables -t nat -A PREROUTING -d 192.168.93.130 -p tcp --dport 1122 -j DNAT --to 192.168.98.134:22   进去的包

A上执行:# iptables -t nat -A POSTROUTING -s 192.168.98.134 -j SNAT --to 192.168.93.130  回来的包

还需要给B机器加上网关,因为前面做过了所以省略

B上执行:# route add default gw 192.168.98.134

再新建一个会话

技术分享图片技术分享图片

连接即可。可以ifconfig发现是B机器的IP。


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

iptables filter 表小案例

十iptables语法iptables filter表小案例iptables nat表应用

十iptables语法iptables filter表小案例iptables nat表应用

10.15 iptables filter表小案例;10.16—10.18 iptables nat

iptables filter表案例

iptables filter表案例及iptables nat表应用