7月13日任务
10.15 iptables filter表案例
10.16/10.17/10.18 iptables nat表应用

扩展
1. iptables应用在一个网段 26期20180713 iptables_26期http://www.aminglinux.com/bbs/thread-177-1-1.html 

2. sant,dnat,masquerade 26期20180713 iptables_26期http://www.aminglinux.com/bbs/thread-7255-1-1.html 

3. iptables限制syn速率 26期20180713 iptables_26期http://www.aminglinux.com/bbs/thread-985-1-1.html 

 26期20180713 iptables_26期http://jamyy.us.to/blog/2006/03/206.html 



iptables filter表案例

26期20180713 iptables_iptables_05



26期20180713 iptables_iptables_06

26期20180713 iptables_26期_07

-ipt是定义变量,这样不用每次都写绝对地址,以后写shell脚本的时候最好写据对路径

首先要把之前的规则清空,所以 -F

然后默认的策略定义  INPUT -DROP OUTPUT- ACCEPT FORWARD -ACCEPT  

接着 添加规则 -A ,指定了状态是 related和established的,针对这些状态的数据放行。这一行主要是保证保持连接的状态。related是一个边缘的状态,没有这个的话,有可能其他的被禁掉了。这一行必须有。

接下里是把192.168.133.0/24网段的访问22端口的放行

然后是把80和21端口数据放行


iptables [-t 表名] <-A|I|D|R> 链名[规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源IP地址|源子网] [--sport 源端口号] [-d 目标IP地址|目标子网] [--dport 目标端口号] <-j 动作>

26期20180713 iptables_20180713_08

写脚本的目的就是连续操作,因为中间的某些操作有可能会断掉连接无法继续操作。


iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许被ping

iptables -I INPUT -p icmp --icmp-type 8 -j DROP 这个就是不允许被ping 但是可以ping外面


需要将service iptables restart后才能去操作icmp

操作完之后的效果就是iptables -I INPUT -p icmp --icmp-type 8 -j DROP 可以ping出去 其他ping不了它

26期20180713 iptables_iptables_09


26期20180713 iptables_20180713_10



iptables nat表应用 1


26期20180713 iptables_iptables_11

首先需要给虚拟机1新做一个网卡

26期20180713 iptables_20180713_12

26期20180713 iptables_26期_13

然后给虚拟机2新建一个网卡,因为本身的网卡已经设置好IP等所以可以取消它启动时连接,第二块网卡也使用lan区段。也就是说想完成这个实验(一台机器一网卡内网,一个外网,另一个机器网卡内网,但是想上网)必须俩内网网卡在一个区段,使用同一个交换机。因为第二个虚拟机的网卡已经变化了,所以远程连接已经不行了。

26期20180713 iptables_20180713_14

26期20180713 iptables_26期_15


26期20180713 iptables_20180713_16

接下来要给虚拟出来的网卡设定一个ip ens37

可以ifconfig 网卡 ip 来临时指定ip 如果想永久保存要修改配置文件

26期20180713 iptables_20180713_17

接着给另一台机器设置内网ip,因为没有办法登陆远程,只能直接从机器登陆,为了保险,ifdown再去关闭第一块网卡。

26期20180713 iptables_26期_18

使用同样的命令 ifconfig 网卡 192.168.100.100/24,而且可以ping通之前那个机器的第二个内网网卡。这样前提条件都已经满足了。

26期20180713 iptables_20180713_19


iptables nat表应用(中)


准备工作已经就绪, 准备做实验。

26期20180713 iptables_iptables_20

首先A机器上需要打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward 

默认 /proc/sys/net/ipv4/ip_forward这个文件的值是0,就意味着没有开启路由转发。

26期20180713 iptables_iptables_21

26期20180713 iptables_iptables_22

然后需要添加规则,实现上网。iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE 目的就是让100.0的网段上网。

26期20180713 iptables_26期_23

然后给b机器设置网关。

192.168.100.1

route -n 查找网关,目前是没有网关的。

26期20180713 iptables_20180713_24

设置网关 route add default gw 192.168.100.1 

26期20180713 iptables_iptables_25

B网卡可以pingA的外网ip就成功了。

26期20180713 iptables_20180713_26然后理论上就可以连接外网了。

注意的几点:

1. A需要一个网卡连接外网,一个内网,B的内网网卡和A的内网在一个网段

2. A的内网IP作为B的内网网卡的网关来提供上网。

其实就是实现了一个路由器的功能



26期20180713 iptables_iptables_27

远程登陆B机器,通过映射到A机器的其他端口来实现。就是说访问A的1122端口,实际上访问的是B的22端口


第一步还是打开端口转发

第二步增加规则。在这时候需要先将之前的规则删除。

26期20180713 iptables_iptables_28

此时的nat表是空的

26期20180713 iptables_26期_29

第二步需要加规则,prerouting这个就是把进来的包,转发到100.100:22

26期20180713 iptables_iptables_30

第三部是 回来的包,经过A机器再做一个

iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.202.123


第四部给B机器加网关

这时候应该就可以远程访问B机器了