三十二、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。

原文地址:http://blog.51cto.com/13576245/2090915

时间: 2024-10-09 11:38:24

三十二、iptables filter表小案例、iptables nat表应用的相关文章

10.15 iptables filter表小案例;10.16—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 10.15 iptables filter表小案例 ipta

十(4)iptables语法、iptables filter表小案例、iptables nat表应用

                                    iptables语法 filter表: INPUT链:作用于进入本机的包 OUTPUT链:作用于送出本机的包 FORWARD链:作用于和本机无关的包 nat表: PREROUTING链:作用是包在刚刚到达防火墙时改变包的目标地址 OUTPUT链:改变本地产生的包的目标地址 POSTROUTING链:作用是在包将离开防火墙时改变包源地址 1.查看iptables规则 iptables -nvL  (此时默认查看filter表,

【WPF学习】第三十二章 执行命令

原文:[WPF学习]第三十二章 执行命令 前面章节已经对命令进行了深入分析,分析了基类和接口以及WPF提供的命令库.但尚未例举任何使用这些命令的例子. 如前所述,RoutedUICommand类没有任何硬编码的功能,而是只表达命令,为触发命令,需要有命令源(也可使用代码).为响应命令,需要有命令绑定,命令绑定将执行转发给普遍的事件处理程序. 一.命令源 命令库中的命令始终可用.触发他们的最简单的方法是将它们关联到实现了ICommandSource接口的控件,其中包括继承自ButtonBase类的

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

ASP 三十二条精华代码 (1)

ASP 三十二条精华代码 (1) 2009-08-10 09:53:03  www.hackbase.com  来源:互联网 1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table border oncontextmenu=return(false)><td>no</table> 可用于Table 2. <body onselectstart="return

Gradle 1.12用户指南翻译——第三十二章. JDepend 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

javaweb学习总结(三十二)——JDBC学习入门【转】

原文地址:javaweb学习总结(三十二)——JDBC学习入门 一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后 才能够使用声卡和网卡,同样道理,我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数 据库打交道,如下所示: 1.2.JDBC介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作

Java进阶(三十二) HttpClient使用详解

Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是A

COJ968 WZJ的数据结构(负三十二)

WZJ的数据结构(负三十二) 难度级别:D: 运行时间限制:5000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给你一棵N个点的无根树,边上均有权值,每个点上有一盏灯,初始均亮着.请你设计一个数据结构,回答M次操作. 1 x:将节点x上的灯拉一次,即亮变灭,灭变亮. 2 x k:询问当前所有亮灯的节点中距离x第k小的距离(注意如果x亮着也算入). 输入 第一行为一个正整数N.第二行到第N行每行三个正整数ui,vi,wi.表示一条树边从ui到vi,距离为wi