2018-1-25 7周4次课 iptables

10.15 iptables filter表小案例

#! /bin/bash

ipt="/usr/sbin/iptables"

$ipt -F

(清控规则)

$ipt -P INPUT DROP

(INPUT策略DROP掉)

$ipt -P OUTPUT ACCEPT

(OUTPUT策略可接受)

$ipt -P FORWARD ACCEPT

(FORWARD策略可接受)

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

(增加规则:-m state 指定状态,--state 状态为RELATED,ESTABLISHED,不加RELATED可能导致其他通信被禁,-j 操作为接受 )

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

(增加规则:网段为192.168.65.0/24,端口为22的数据包放行)

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

(80端口数据包放行)

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

(21端口数据包放行)

·实际操作:

[[email protected] ~]# sh /usr/local/sbin/iptables.sh
[[email protected] ~]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
28  1848 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
0     0 ACCEPT     tcp  --  *      *       192.168.65.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 15 packets, 1412 bytes)
pkts bytes target     prot opt in     out     source               destination
[[email protected] ~]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
32  2112 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
0     0 ACCEPT     tcp  --  *      *       192.168.65.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 18 packets, 2568 bytes)
pkts bytes target     prot opt in     out     source               destination
[[email protected] ~]# service iptables restart
Redirecting to /bin/systemctl restart iptables.service
[[email protected] ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
10   660 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
0     0 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, 792 bytes)
pkts bytes target     prot opt in     out     source               destination

·icmp示例:

禁掉icmp:

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



10.16 iptables nat表应用(上)

需求:

A:两块网卡,一块可以上外网,一块用内网

B:只有一块内网网卡

让B机器可以连外网

准备工作:

准备两个虚拟机

给两台虚拟机做快照

给A机器添加网卡:

设置LAN区段,等效于设置连接的交换机(名称可以任取)

同样方式给B机器添加网卡,并把B机器原先网卡给禁用

LAN区段选择和A机器一样的,意味着,此时A机器的第二块网卡和B机器的第二块网卡已经连在同一个交换机上

进入A机器,可以开到新增的网卡,名称为ens37

给新网卡设置新ip(ifconfig ens37 192.168.100.1/24,此ip重启后消失,新建网卡配置文件重启后ip不变)

同样的方法,设置B机器的网卡(因为B机器网卡没有配置,所以无法远程连接,只能在虚拟机上操作)

如上图,两台机器已经可以连通。

准备工作已经完成。




10.17 iptables nat表应用(中)


windows主机无法ping同两台虚拟机所添加的网卡

B机器也无法联网

在A机器上打开端口转发echo "1" > /proc/sys/ipv4/ip_forward(0为关闭,1为打开)

A机器上增加一条规则iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

B机器设置网卡192.168.100.1,数据包从B到A通路

B机器已经可以连A机器第一块网卡

然后编辑公共DNS

vi /etc/resolve.conf

但是ping不通DNS 119.29.29.29

查了写资料和其他人的处理方法,把iptables规则重新添加一次,再返回B机器就能连通了

能ping通DNS也就是说可以连接外网了

可以连外网,但是依然连不了内网

这就是一个路由器的路由器,A机器就是路由器




10.18 iptables nat表应用(下)


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

虽然无法连接192.168.100.100,但是可以连接A机器192.168.65.128,可以做一个跳转到B机器192.168.100.100

把A机器192.168.65.128的某端口(我们设置为1122),映射为B机器上192.168.100.100的22端口

第一步:打开端口转发echo "1" > /proc/sys/net/ipv4/ip_forward

第二步:删除iptables规则

第三步:增加iptables规则

iptables -t nat -A PREROUTING -d 192.168.65.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

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

参考:http://man.linuxde.net/iptables

http://blog.chinaunix.net/uid-26495963-id-3279216.html

原文地址:http://blog.51cto.com/11530642/2065154

时间: 2024-10-10 09:52:47

2018-1-25 7周4次课 iptables的相关文章

2018.4.25 18周1次课

十八周一次课(4月25日) 20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数 20.27 分发系统介绍 expect是一种能够按照脚本内容里面设定的方式与交互式程序进行"会话"的程序.根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及什么是正确的应答.它是一种可以提供"分支和嵌套结构"来引导程序流程的解释型脚本语言. 我们熟知的shell编程功能虽然很强大,但是

2018.1.25 7周4次课

七周四次课(1月25日) 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例 需求:只针对filter表,预设策略INPUT链DROP, 其他两个链ACCEPT,然后针对192.168.37.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口. 这个需求不算复杂,但是因为有多条规则,所以最好写成脚本的形式.脚本内容如下: vi /usr/local/sbin/ip

2018.1.9 5周2次课

五周第二次课(1月9日) 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 7.6 yum更换国内源 1.恢复之前备份的文件 2. 进入"/etc/yum.repos.d"目录 3.删除"CentOS-Base.repo"文件 4.下载"163.repo"文件 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo curl -O http://mirrors

2018.1.16 6周2次课

六周第二次课(1月16日) 9.4/9.5 sed 9.4/9.5 sed 其实grep工具的功能还不够强大,它实现的只是查找功能,而不能把查找的内容替换.以前用vim操作文档的时候,可以查找也可以替换, 但只限于在文本内部操作,而不能输出到屏幕上.sed工具以及后面要介绍的awk工具就能把替换的文本输出到屏幕上,而且还有其他更丰富的功能.sed和awk都是流式编辑器,是针对文档的行来操作的. sed  '/x/'p filename:匹配x字符 sed  -n  '/x/'p  filenam

2018.3.1 10周2次课

十周第二次课(3月1日) 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机 11.14/11.15 Apache和PHP结合 配置httpd支持php httpd主配置文件/usr/local/apache2.4/conf/httpd.conf vim /usr/local/apache2.4/conf/httpd.conf   //修改以下4个地方 ServerName 搜索ServerName,把#ServerName www.example

2018.4.23 17周4次课

十七周4次课(4月23日) 20.20 告警系统主脚本 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本 创建告警系统的目录: [[email protected] /usr/local/sbin]# mkdir mon [[email protected] /usr/local/sbin]# ls mon  nginx_log_rotate.sh [[email protected] /usr/local/sbin]# cd mon [[email pro

2018.1.29 8周1次课

八周一次课(1月29日) 10.23 linux任务计划cron 10.24 chkconfig工具 10.25 systemd管理服务 10.26 unit介绍 10.27 target介绍 10.23 linux任务计划cron 其实大部分系统管理工作都是通过定期自动执行某个脚本来完成的, 那么如何定期执行某个脚本呢? 这就要借助Linux的cron功能了 Linux任务计划功能的操作都是通过crontab命令来完成的, 其常用的选项有以下几个. -u:表示指定某个用户,不加- u选项则为当

2018.1.8 5周1次课

五周第一次课(1月8日) 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库 7.1 安装软件包的三种方法 rpm工具 yum工具 源码包 在Windows系统下安装软件很简单,只要双击后缀为.exe的文件,然后根据提示连续单击"下一步" 按钮即可. 然而在Linux系统下安装软件就没那么容易了,因为我们不是在图形界面下.所以,你必须学会如何在Linux下安装软件 前面我们多次提到了yum命令,它是Red Ha

2018.1.10 5周3次课

五周第三次课(1月10日) 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 8.1 shell介绍 shell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具.实际上,在shell和计算机硬件之间还有一层东西一一系统内核.如果把计算机硬件比作一个人的躯体,那系统内核就是人的大脑.至于shell,把它比作人的五官似乎更贴切些.言归正传,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系

2018.1.11 5周4次课

五周第四次课(1月11日) 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 8.6 管道符和作业控制 1. 管道符 前面已经提过管道符|,它用于将前一个指令的输出作为后一个指令的输人. 2. 作业控制 当运行进程时,常用的命令如下: 暂停:按ctrl+Z组合键 fg n:(foreground的简写)恢复第n个进程运行 bg n:(backgroup的简写)把第n个进程放到后台运行 终止:按ctrl+C组合键 jobs:把暂停或在后台的任务列出来. 命令 &: