iptables filter表小案例,iptables nat表应用

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

需求:把80端口、22端口、21端口都放行,其中22端口指定IP段放行。

  • 用一个脚本来实现这个需求。

    #!/bin/bash
    ipt="/usr/sbin/iptables" #定义变量,执行命令时写命令的绝对路径。
    $ipt -F #清空filter表之前的规则
    $ipt -P INPUT DROP #定义INPUT默认策略
    $ipt -P OUTPUT ACCEPT #定义OUTPUT默认策略
    $ipt -P FORWARD ACCEPT #定义FORWAD默认策略
    $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #指定状态放行
    $ipt -A INPUT -s 192.168.159.0/24 -p tcp --dport 22 -j ACCEPT #指定ip和端口放行
    $ipt -A INPUT -p tcp --dport 80 -j ACCEPT #指定端口放行
    $ipt -A INPUT -p tcp --dport 21 -j ACCEPT #指定端口放行

使用脚本实现需求是因为开始就将INPUT链的默认策略改成了DROP,远程就会断开。

[root@localhost ~]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
57  4188 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
0     0 ACCEPT     tcp  --  *      *       192.168.159.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 39 packets, 3644 bytes)
pkts bytes target     prot opt in     out     source               destination      

使用iptables -nvL命令查看filter表的策略,刚才使用脚本添加的策略已经添加成功。

  • -m state --state[状态]
    • INVALID:无效的封包,例如数据破损的封包状态
    • ESTABLISHED:已经联机成功的联机状态
    • NEW:想要新建立联机的封包状态
    • RELATED:这个最常用!表示这个封包是与我们主机发送出去的封包有关, 可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设定,因为设定了他之后,只要未来由本机发送出去的封包,即使我们没有设定封包的 INPUT 规则,该有关的封包还是可以进入我们主机, 可以简化相当多的设定规则。

禁止外面的机器ping本机

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

禁ping不代表不能访问,只是ping不同而已。

iptables nat表应用

准备工作

  1. 准备两台虚拟机A、B
  2. A设备上两块网卡,分别为ens33(192.168.159.128),ens37(192.168.100.10),ens33可以上外网,ens44仅可以是内部网络。
  3. B设备上只有ens37(192.168.100.100)仅可以使用内部网络,并且和A设备可以通信。

需求1:可以让B设备连接外网

  • A设备上需要打开路由转发

    [root@centos-01 ~]# cat /proc/sys/net/ipv4/ip_forward
    0
    [root@centos-01 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
    [root@centos-01 ~]# cat /proc/sys/net/ipv4/ip_forward
    1

文件内容默认为0,表示没有开启内核转发。改成1就打开了端口转发。

  • 在nat表POSTROUTING链上增加一条规则

    [root@centos-01 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
    [root@centos-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 4 packets, 304 bytes)
    pkts bytes target prot opt in out source destination

    Chain POSTROUTING (policy ACCEPT 4 packets, 304 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

-o选项后面跟网卡设备名称,表示出口网卡,MASQUERADE是伪装、冒充的意思。

  • 将B设备的网关(GATEWAY)改成设备A的ip地址

    此时B机器可以连通外网,但是外网机器无法访问B机器,A机器的作用就类似于一个路由器

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

  • A设备打开路由转发

    [root@centos-01 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

    更改内核设置,打开路由转发功能,默认值是0.设置成1则打开。

  • 在A设备的nat表中增加两条规则(增加之前需要清空nat表中的规则)

    [root@centos-01 ~]# iptables -t nat -A PREROUTING -d 192.168.159.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
    [root@centos-01 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.159.128

  • 将B设备的网关设置成A设备的ens37的IP

完成之后,B可以连接外网,还可以使用远程通过连接A的1122端口来进行远程连接。


本文转自 豆渣锅 51CTO博客,原文链接:

http://blog.51cto.com/754599082/2046254


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
27天前
|
负载均衡 Linux 网络虚拟化
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
|
3月前
|
Linux 网络安全
NAT 技术与 Linux iptables
NAT 技术与 Linux iptables
|
4月前
|
网络协议 开发工具 Docker
iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9999 -j DNAT --to-destination 172.17.0.2:80 !
iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9999 -j DNAT --to-destination 172.17.0.2:80 !
73 1
|
4月前
|
网络协议 网络安全 开发工具
iptables的源地址、目标地址转换
iptables的源地址、目标地址转换
139 1
|
4月前
|
网络安全 开发工具
iptables 源地址、目标地址转换
实验准备,配置web服务器,配置web防火墙网卡,配置客户机网卡,测试,开启防火墙功能,设置源地址转换,通过改变我客户机的地址身份为web服务器同网段来实现访问,通过改变目标地址(客户机)的地址为web同网段来实现
89 0
|
10月前
|
网络安全 Docker 容器
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule
|
1月前
|
安全 网络安全 数据安全/隐私保护
手把手教你用eNSP模拟器配置防火墙源NAT
手把手教你用eNSP模拟器配置防火墙源NAT
|
4月前
|
Linux 虚拟化
VMware workstation 中centos7虚拟机在nat模式下怎么配置网卡,指定我想要的IP并且可以联网
https://blog.csdn.net/2302_78534730/article/details/132825156?spm=1001.2014.3001.5502
255 0
|
4月前
ENSP Nat地址转换(配置命令 )
ENSP Nat地址转换(配置命令 )
115 1
|
4月前
|
安全 数据安全/隐私保护 网络架构
ensp中nat地址转换(静态nat 动态nat NAPT 和Easy IP)配置命令
ensp中nat地址转换(静态nat 动态nat NAPT 和Easy IP)配置命令
268 0