iptables filter表案例、iptables nat表应用

目录

一、iptables filter表案例
二、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

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

规则有多条,写成脚本的形式较好。脚本内容如下:

#!/bin/bash

ipt="/usr/sbin/iptables"   
$ipt -F
$ipt -P INPUT DROP    //这个策略一旦设定后,只有使用命令iptables -P INPUT ACCEPT才能恢复成原始状态。
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT     //目的是让相关的数据包RELATED,ESTABLISHED这两个状态放行
$ipt -A INPUT -s 192.168.162.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

直接运行/bin/sh /usr/local/sbin/iptables.sh运行脚本建立规则。

[root@minglinux-01 sbin]# sh iptables.sh 
[root@minglinux-01 sbin]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   36  2376 ACCEPT     tcp  --  *      *       192.168.162.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

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 19 packets, 1908 bytes)
 pkts bytes target     prot opt in     out     source               destination   

如果想开机启动时初始化防火墙规则,则需要在/etc/rc.d/rc.local中添加一行/bin/sh/usr/local/sbin/iptables.sh。

关于icmp的包有一个比较常见的应用,如下所示:
iptables -I INPUT -p icmp --icmp-type 8 -j DROP

这里--icmp-type选项要跟-p icmp一起使用,后面指定类型编号。这个8指的是能在本机ping通其他机器,而其他机器不能ping通本机。

C:\Users\Administrator>ping 192.168.162.130

正在 Ping 192.168.162.130 具有 32 字节的数据:
来自 192.168.162.130 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.162.130 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.162.130 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.162.130 的回复: 字节=32 时间<1ms TTL=64

192.168.162.130 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

C:\Users\Administrator>ping 192.168.162.130

正在 Ping 192.168.162.130 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。

192.168.162.130 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),

二、iptables nat表应用

  • A机器两块网卡ens33(192.168.162.130),ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。

  • 两台机器都添加一个网卡并使用同一LAN区段,然后启动机器配置好IP,两机器互相ping通。

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

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

[root@minglinux-01 ~]# echo "1">/proc/sys/net/ipv4/ip_forward
[root@minglinux-01 ~]# 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
[root@minglinux-01 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
[root@minglinux-01 ~]# 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         
    0     0 MASQUERADE  all  --  *      ens33   192.168.100.0/24     0.0.0.0/0  
  • B上设置网关为192.168.100.1
    route add default gw 192.168.100.1

  • B机器能ping外网成功


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

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

[root@minglinux-01 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@minglinux-01 ~]# cat !$
cat /proc/sys/net/ipv4/ip_forward
1
  • A上执行iptables -t nat -A PREROUTING -d 192.168.162.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
[root@minglinux-01 ~]# iptables -t nat -A PREROUTING -d 192.168.162.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
[root@minglinux-01 ~]# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            192.168.162.130      tcp dpt:1122 to:192.168.100.100:22

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    
  • A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.162.130
[root@minglinux-01 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.162.130
[root@minglinux-01 ~]# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            192.168.162.130      tcp dpt:1122 to:192.168.100.100:22

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         
    0     0 SNAT       all  --  *      *       192.168.100.100      0.0.0.0/0            to:192.168.162.130
  • C成功远程连接到B,A机器相当于一个路由器,实验完成。


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、文件/文件夹管理 ls 列出当前目录文件(不包括隐含文件)ls -a 列出当前目录文件(包括隐含文件)ls -...
    BerL1n阅读 12,308评论 0 78
  • iptables filter表案例 iptables filter 表案例 创建一个iptables.sh脚本 ...
    hch004阅读 3,865评论 0 0
  • 防火墙的概念iptables的简介iptables命令网络防火墙NATfirewalld服务 一、防火墙的概念 (...
    哈喽别样阅读 5,846评论 0 1
  • 丝雨落花溪,风拂水上漪。 云浓不见影,小路雾中迷。
    黄旭明阅读 1,891评论 0 2
  • Http缓存和常规意义上的缓存一致,当有可用的合法缓存时,就可以直接从本地存储设备而不是原始服务器提取.使用缓存有...
    evil_ice阅读 4,214评论 0 1

友情链接更多精彩内容