linux笔记-032-日常运维-filter表实例,nat表实例

filter表实例

需求:把80端口,22端口,21端口放行,22端口指定只有某IP段可以访问,其他IP段的均拒绝,在这里,利用SHELL脚本完成这个需求

[[email protected]01:~#] vim /usr/local/sbin/iptables.sh

#! /bin/bash

# 以下操作没用-t指定表,所以对默认的filter表生效

# 定义一个变量ipt,命令用绝对路径能不受环境变量影响

ipt="/usr/sbin/iptables"

# 清空之前定义的规则

$ipt -F

# 设置INPUT链的默认规则

$ipt -P INPUT DROP

# 设置OUTPUT链的默认规则

$ipt -P OUTPUT ACCEPT

# 设置FPRWARD链的默认规则

$ipt -P FORWARD ACCEPT

# 用-m state --state RELATED,ESTABLISHED指定状态,针对这些状态采取放行的规则

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT    

# 把172.16.0.0/24网段访问22端口的数据包放行

$ipt -A INPUT -s 172.16.0.0/24 -p tcp --dport 22 -j ACCEPT

# 把访问80端口和21端口的数据包放行

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

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

[[email protected]-01:~#] sh /usr/local/sbin/iptables.sh

[[email protected]-01:~#] iptables -nvL

Chain INPUT (policy DROP 6 packets, 1010 bytes)

 pkts bytes     target prot  opt  in   out     source            destination         

   33  2168    ACCEPT  all   --   *     *      0.0.0.0/0         0.0.0.0/0            state RELATED,ESTABLISHED

    0     0    ACCEPT  tcp   --   *     *      172.16.0.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, 2740 bytes)

 pkts bytes     target       prot  opt  in   out     source               destination         

icmp示例:

禁止其他主机ping这台主机

[[email protected]01:~#] iptables -I INPUT -p icmp --icmp-type 8 -j DROP

[[email protected]-01:~#] iptables -nvL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes    target    prot  opt in   out     source            destination         

    0     0    DROP      icmp  --  *     *      0.0.0.0/0          0.0.0.0/0            icmptype 8

   21  1556    ACCEPT    all   --  *     *      0.0.0.0/0          0.0.0.0/0            state RELATED,ESTABLISHED

    0     0    ACCEPT    icmp  --  *     *      0.0.0.0/0          0.0.0.0/0           

    0     0    ACCEPT    all   --  lo    *      0.0.0.0/0          0.0.0.0/0           

    0     0    ACCEPT    tcp   --  *     *      0.0.0.0/0          0.0.0.0/0            state NEW tcp dpt:22

    8  2943    REJECT    all   --  *     *      0.0.0.0/0          0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes     target     prot  opt  in   out     source            destination         

    0     0     REJECT     all   --   *     *      0.0.0.0/0         0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 6 packets, 656 bytes)

 pkts bytes     target       prot  opt  in   out     source            destination         

[[email protected]-01:~#] ifconfig

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 172.17.1.240  netmask 255.255.255.0  broadcast 172.17.1.255

        inet6 fe80::20c:29ff:fe08:ac45  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:08:ac:45  txqueuelen 1000  (Ethernet)

        RX packets 5052652  bytes 411274464 (392.2 MiB)

        RX errors 0  dropped 7222  overruns 0  frame 0

        TX packets 115615  bytes 28406618 (27.0 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

客户端无法ping通这台主机

取消规则,客户端可以ping通这台主机

[[email protected]01:~#] iptables -D INPUT -p icmp --icmp-type 8 -j DROP

nat表实例

A机器两块网卡eno16777736(192.168.133.130)、eno33554976(192.168.100.1),eno16777736可以上外网,eno33554976仅仅是内部网络,B机器只有eno33554976(192.168.100.100),和A机器eno33554976可以通信互联。

准备工作:

把虚拟机A克隆一台命名为虚拟机B

设置虚拟机A网卡

设置虚拟机B网卡

最后把虚拟机A和虚拟机B都启动起来

给两台虚拟机的虚拟网卡添加IP地址

临时添加:ifconfig eno33554976 192.168.100.1/24

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

开启A机器的路由转发:

[[email protected]01:~#] cat /proc/sys/net/ipv4/ip_forward

0

[[email protected]-01:~#] echo "1" > /proc/sys/net/ipv4/ip_forward

[[email protected]-01:~#] cat /proc/sys/net/ipv4/ip_forward

1

增加规则:

[[email protected]01:~#] iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eno16777736 -j MASQUERADE

[[email protected]-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  --   *   eno16777736  192.168.100.0/24       0.0.0.0/0  

设置B机器的网关(临时):

设置B机器DNS:

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

开启A机器的路由转发:

[[email protected]01:~#] cat /proc/sys/net/ipv4/ip_forward

0

[[email protected]-01:~#] echo "1" > /proc/sys/net/ipv4/ip_forward

[[email protected]-01:~#] cat /proc/sys/net/ipv4/ip_forward

1

A机器上设置规则:

[[email protected]01:~#] iptables -t nat -F

[[email protected]-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   

[[email protected]-01:~#] iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

[[email protected]-01:~#] iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130

[[email protected]-01:~#] iptables -t nat -nvL

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.133.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.133.130

设置B机器的网关(临时):

测试:

在XSHELL新建一个链接

扩展

iptables应用在一个网段:

http://www.aminglinux.com/bbs/thread-177-1-1.html

sant,dnat,masquerade:

http://www.aminglinux.com/bbs/thread-7255-1-1.html

iptables限制syn速率:

http://www.aminglinux.com/bbs/thread-985-1-1.html

原文地址:https://www.cnblogs.com/LZ0830/p/8351011.html

时间: 2024-10-07 15:28:55

linux笔记-032-日常运维-filter表实例,nat表实例的相关文章

笔记8(日常运维w、vmstat、top、sar、nload、free、ps、netstat、tcptump、Linux防火墙)

w查看系统负载 date 查看当前系统的时间 w出来的,第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载.第二行开始以及下面所有的行,告诉我们的信息是,当前登录的都有哪些用户,以及他们是从哪里登录的等等.其实,在这些信息当中,我们最应该关注的应该是第一行中的 'load average:' 后面的三个数值. 第一个数值表示1分钟内系统的平均负载值:第二个数值表示5分钟内系统的平均负载值:第三个数值表示15分钟系统的平均负载值.这个值的意义是,单位时间段内CPU活动进程数

日常运维工作中如何确保你的linux操作系统安全

在现在这个世道中,Linux操作系统的安全是十分重要的.但是,你得知道怎么干.一个简单反恶意程序软件是远远不够的,你需要采取其它措施来协同工作.下面是日常运维工作中常用的几种Linux安全的策略方法. 1. 使用SELinux SELinux是用来对Linux进行安全加固的,有了它,用户和管理员们就可以对访问控制进行更多控制.SELinux为访问控制添加了更细的颗粒度控制.与仅可以指定谁可以读.写或执行一个文件的权限不同的是,SELinux可以让你指定谁可以删除链接.只能追加.移动一个文件之类的

Linux小课堂开课了(9)-Centos7日常运维管理

Centos7日常运维管理 1,查看系统配置,进程,I/O,网卡流量使用w可以查看系统的状态,当前时间,系统启动时间,登录用户,从哪个IP登录的,系统的负载值.使用uptime查看系统的负载值使用iptop,可以具体查看哪个进行使用的I/O较多,需要安装一下[[email protected] ~]# yum -y install iotop[[email protected] ~]# iotop使用cat /proc/cpuinfo查看系统配置使用vmstat可以查看CPU,内存,虚拟磁盘,交

zookeeper 用法和日常运维

本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要点,围绕ZK的部署和运维两个方面讲一些管理员需要知道的东西.本文并非一个ZK搭建的快速入门,关于这方面,可以查看<ZooKeeper快速搭建>. 1.部署 本章节主要讲述如何部署ZooKeeper,包括以下三部分的内容: 系统环境 集群模式的配置 单机模式的配置 系统环境和集群模式配置这两节内容大

Hbase 日常运维

1.1监控Hbase运行状况 1.1.1操作系统 1.1.1.1IO a.群集网络IO,磁盘IO,HDFS IO IO越大说明文件读写操作越多.当IO突然增加时,有可能:1.compact队列较大,集群正在进行大量压缩操作. 2.正在执行mapreduce作业 可以通过CDH前台查看整个集群综合的数据或进入指定机器的前台查看单台机器的数据: b.Io wait 磁盘IO对集群的影响比较大,如果io wait时间过长需检查系统或磁盘是否有异常.通常IO增加时io wait也会增加,现在FMS的机器

mysql日常运维与参数调优

日常运维 DBA运维工作 日常 导数据,数据修改,表结构变更 加权限,问题处理 其它 数据库选型部署,设计,监控,备份,优化等 日常运维工作: 导数据及注意事项 数据修改及注意事项 表结构变更及注意事项 加权限及注意事项 问题处理,如数据库响应慢 导数据及注意事项 数据最终形式(csv,sql文本,还是直接导入某库中) 导数据方法(mysqldump,select into outfile,) 注意事项 导出为csv格式需要file权限,并且只能数据库本地导 避免锁库锁表(mysqldump使用

Openstack云计算项目实施其二(安装后日常运维)

5 安装后日常运维   运维基本的操作都在控制节点上的,较为方便的方式就是在openstack 的 dashboard(仪表盘)中进行,进入 dashboard 的方式就是直接在浏览器中输入控制节点的 IP 地址.(需要注意的是浏览器选择方面最好选择火狐浏览器或则谷歌浏览器,因为相对于 IE 浏览器而言,前面两个浏览器对于 openstack 的支持性要好,使用 IE 会在打开实例控制台时无法进入,出现"No vnc...."的错误信息) 用户名和密码放在控制节点/root 下,存放在

马哥2016全新Linux+Python高端运维班第三周作业作答

                    马哥2016全新Linux+Python高端运维班第三周作业                                           1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | awk '{print $1 $NF}'| uniq -d     [[email protected] ~]# who     yicx     :0  

Linux服务器集群运维经验

公司大概有5000+以上的服务器节点,包括各种应用,我和同事共同维护大约2500+的服务器,主要包括一些视频cdn,直播视频cdn,webcdn和p2p服务器. 以下是自己在运维工作中的一点经验和看法,希望对大家有所帮助 1.       服务器型号的区分,为以后的统一化和标准化作硬件上的准备,很多人忽视这一点,其实如果这一点做得好会使后面的运维工作轻松很多,根据应用我们主要把服务器分为3中,cpu密集型,主要用于大量计算应用,比如p2p;内存密集型,用于cache类应用,比如squid,var