运维日常

一、firewalld和netfilter

1、关闭防火墙

[[email protected] ~]# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled  (更改配置为disabled)
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted  (切记下边的配置不能更改,否则无法启动)
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# setenforce 0  (临时关闭防火墙)
[[email protected] ~]# getenforce
Permissive

2、iptables工具

netfilter服务是CentOS7之前版本中使用的防火墙,firewalld服务是CentOS7版本之后的使用的防火墙,但是两者的iptable工具用法相同

[[email protected] ~]# systemctl disable firewalld  (关闭firewalld服务,有两个步骤,分别是:disable表示开机不启动和stop停止)
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# yum install -y iptables-services  (要使用iptables工具,需要安装iptables-services软件包)
已加载插件:fastestmirror
base
.......(中间省略)

作为依赖被升级:
  iptables.x86_64 0:1.4.21-24.1.el7_5   

完毕!
[[email protected] ~]# systemctl enable iptables (此安装包会产生iptable服务)
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.
[[email protected] ~]# systemctl start iptables  (开启iptable服务)
[[email protected] ~]# iptables -nvL  (此命令可以查看iptable的默认规则)
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source   destination 
   31  2144 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED
0 0 ACCEPT icmp --  *  *   0.0.0.0/00.0.0.0/0   
0 0 ACCEPT all  --  lo *   0.0.0.0/00.0.0.0/0   
0 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0state NEW tcp dpt:22
0 0 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-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/00.0.0.0/0reject-with icmp-host-prohibited

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

3、iptable的表和链接

iptables只是Linux防火墙的管理工具而已。真正实现防火墙功能的是netfilter(CentOS7之后是firewalld),它是Linux内核中实现包过滤的内部结构

1)iptable的五表五链

五表
filter表:     过滤数据包
Nat表:        用于网络地址转换(IP、端口)
Mangle表:     修改数据包的服务类型、TTL、并且可以配置路由实现QOS
Raw表:        决定数据包是否被状态跟踪机制处理
Security表:   用于强制访问控制(MAC)的网络规则
五链
INPUT链:      进来的数据包应用此规则链中的策略
OUTPUT链:     外出的数据包应用此规则链中的策略
FORWARD链:    转发数据包时应用此规则链中的策略
PREROUTING链: 对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
POSTROUTING链:对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

2)iptable基本用法

一.基本格式
1. iptable [-t 表] 命令选项 [连名]  匹配条件  [-j 动作]
2.常用命令选项如下:
-A (append) 在指定的连的结尾添加规则
-D (delete)删除指定连中的规则,可以按规则号或规则内容匹配
-I (insert)插入一条新规则,默认是在最前面
-R (replace) 替换某一条规则
-L (list)列出所有规则
-F (flush)清空所有规则
-N (new)自定义一条规则连
-X (--delete-chain) 删除用户自定义规则连
-P (policy)设置默认策略
-n (numeric)以数字方式显示,如:显示ip,但不显示主机名
-v (verbose)显示详细信息
-V (version)查看iptable的版本信息
-Z  清空计数器值
--line-number 查看规则连是,显示列表号 

二.举例
# iptable -t filter -F(清空filter表中所有规则)
# iptable -t filter -Z(清空filter表中的计数器值)
# iptable -t filter -X (清除filter表中自定义连)
# iptable -t filter -P INPUT DROP (设置INPUT连默认策略为DROP)
# iptable -t filter -P OUTPUT DROP
# iptable -t filter -P FORWROD DROP
# iptable -t filter -A INPUT -p tcp -j ACCEPT (在INPUT连最后添加一条允许tcp协议的数据包进入的规则)
# iptable -t filter -R INPUT 1 -p tcp -j DROP (替换INPUT连的第1条规则为拒绝tcp数据包进入)
# iptable -t nat -vnL --line-number (以详细的、数字的格式列出nat表中的所有规则)
# iptable -t nat -D POSTROUTING 1 (删除nat表POSTROUTING 连中的第1条规则)

三.条件匹配
1. 协议匹配:用于检查数据包使用的协议,符合规则就允许,反之拒绝。允许使用的协议名在/etc/protocols文件中。常用的协议有tcp,udp,icmp,ip 和all。( -p 协议名 )

# iptable -I INPUT -p icmp -j REJECT (拒绝进入防火墙本身的icmp数据包)
# iptable -A FORWARD -p udp -j ACCEPT (允许转发udp的所有数据包)

2. 地址匹配:用于检查数据包的地址是否符合规则,包括源地址和目的地址。(-s 源地址, -d 目的地址)
# iptable -A FORWARD -s 10.0.0.0/8  -j DROP (拒绝转发来自10.0.0.0/8 网段的数据包)
# iptable -A FORWARD -d 80.0.0.0/8  -j DROP ( 拒绝转发目的是80.0.0.0/8 网段的数据包)

3.端口匹配:用于检查数据包的tcp或udp端口,需要和 “-p 协议类型” 一起使用(-sport 源端口,-dport 目的端口)

# iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 80  -j ACCEPT (允许转发来自10.0.0.0/8网段,目的端口是80的数据包)
# iptables -I FORWARD -s 10.0.0.0/8 -p tcp --sport 21   -j ACCEPT(允许转发来自10.0.0.0/8网段,源端口是21的数据包)

4.接口匹配:用于检查数据包从防火墙那个接口进入或出去,来判断是否允许。

# iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -p tcp --dport 80 -j ACCEPT(允许转发从eth0进入,来自10.0.0.0/8网段,使用tcp 协议,目的端口椒80的数据包)
# iptables -A INPUT -i eth0 -s 80.0.0.0/8 -j DORP (拒绝从eth0进入,来自80.0.0.0/8的数据包)

5.SNAT转换:一般linux充当网关服务器时使用,SNAT只能用在nat表的POSTROUTING连,用于对源地址进行转换。要结合 --to 使用。

# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT --to 202.106.1.1(将来自10.0.0.0/8网段的所有数据包的源地址转为202.106.1.1)
# iptables -t nat -A POSTROUTING -i eth0 -s 80.0.0.0/8 -p tcp --dport 25 -j SNAT --to 202.106.1.1

6.DNAT转换:只能用在nat表中的PREROUTING连,用于对目的地址或端口进行转换。

# iptables -t nat -A PREROUTING -i eth1 -d 202.106.1.1 -p tcp --dport 80 -j DNAT --to 10.0.0.10(将从eth1 进入,目的地址是202.106.1.1,使用tcp 协议,目的端口是80的数据包的目的地址转为10.0.0.1)

7.MASQUERADE:伪装,是SNAT的特例。

# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth1 -j MASQUERADE(将来自10.0.0.0/8网段,从eth1出去的数据包的源地址伪装为eth1接口地址)

3)数据包流向判断

如果是本机:   PREROUTING——INPUT——OUTPUT——POSTROUTING  
不是本机:PREROUTING——FORWARD——POSTROUTING

https://blog.csdn.net/achejq/article/details/53067170

4)具体操作

[[email protected] ~]# iptables -nvL  (查看iptable默认规则)
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source   destination 
  380 29628 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED
0 0 ACCEPT icmp --  *  *   0.0.0.0/00.0.0.0/0   
0 0 ACCEPT all  --  lo *   0.0.0.0/00.0.0.0/0   
0 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0state NEW tcp dpt:22
   63  6726 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-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/00.0.0.0/0reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 358 packets, 26368 bytes)
 pkts bytes target prot opt in out source   destination 
[[email protected] ~]# iptables -F  (清空规则命令)
[[email protected] ~]# iptables -nvL
Chain INPUT (policy ACCEPT 7 packets, 488 bytes)
 pkts bytes target prot opt in out source   destination 

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

Chain OUTPUT (policy ACCEPT 5 packets, 492 bytes)
 pkts bytes target prot opt in out source   destination 
[[email protected] ~]# service iptables save  (将当前的规则保存到配置文件中)
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]
[[email protected] ~]# cat /etc/sysconfig/iptables  (保存规则的配置文件)
# Generated by iptables-save v1.4.21 on Sat Jun  9 14:30:38 2018
*filter
:INPUT ACCEPT [63:4324]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [40:4104]
COMMIT
# Completed on Sat Jun  9 14:30:38 2018
[[email protected] ~]# service iptables restart  (重启iptables)
Redirecting to /bin/systemctl restart iptables.service
[[email protected] ~]# iptables -nvL  (已经没有规则)
Chain INPUT (policy ACCEPT 8 packets, 600 bytes)
 pkts bytes target prot opt in out source   destination 

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

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

[[email protected] ~]# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP  (不加-t,则默认是filter表,添加规则,各选项和参数意义上文已经提及)
[[email protected] ~]# iptables -nvL  (查看已经添加的规则)
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source   destination 
   31  2160 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state 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/0state NEW tcp dpt:22
0 0 REJECT all  --  *  *   0.0.0.0/0 0.0.0.0/0reject-with icmp-host-prohibited
0 0 DROP   tcp  --  *  *   192.168.188.1 192.168.188.128  tcp spt:1234 dpt:80

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/00.0.0.0/0reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 8 packets, 1120 bytes)
 pkts bytes target prot opt in out source   destination 
[[email protected] ~]# iptables -I INPUT -p tcp --dport 80 -j DROP   (还有-I,是一种插入的方式,会在规则第一行显示)
[[email protected] ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source   destination 
0 0 DROP   tcp  --  *  *   0.0.0.0/00.0.0.0/0tcp dpt:80
  141  9768 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED
0 0 ACCEPT icmp --  *  *   0.0.0.0/00.0.0.0/0   
0 0 ACCEPT all  --  lo *   0.0.0.0/00.0.0.0/0   
0 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0state NEW tcp dpt:22
0 0 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited
0 0 DROP   tcp  --  *  *   192.168.188.1192.168.188.128  tcp spt:1234 dpt:80

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/00.0.0.0/0reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 5 packets, 588 bytes)
 pkts bytes target prot opt in out source   destination   (-A会添加在最后,-I会添加在最前边,添加的规则会优先过滤前边的规则)
[[email protected] ~]# iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP (-D为删除规则)
[[email protected] ~]# iptables -D INPUT -p tcp --dport 80 -j DROP
[[email protected] ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source   destination 
  368 29076 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED
0 0 ACCEPT icmp --  *  *   0.0.0.0/00.0.0.0/0   
0 0 ACCEPT all  --  lo *   0.0.0.0/00.0.0.0/0   
0 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0state NEW tcp dpt:22
0 0 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-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/00.0.0.0/0reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 5 packets, 732 bytes)
 pkts bytes target prot opt in out source   destination 
[[email protected] ~]# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP
[[email protected] ~]# iptables -nvL --line-number  (会显示规则的顺序号)
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target prot opt in out source   destination 
1  492 38008 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED
2  0 0 ACCEPT icmp --  *  *   0.0.0.0/00.0.0.0/0   
3  0 0 ACCEPT all  --  lo *   0.0.0.0/00.0.0.0/0   
4  0 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0state NEW tcp dpt:22
5  0 0 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited
6  0 0 DROP   tcp  --  *  *   192.168.188.1192.168.188.128  tcp spt:1234 dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target prot opt in out source   destination 
10 0 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 73 packets, 6908 bytes)
num   pkts bytes target prot opt in out source   destination 
[[email protected] ~]# iptables -D INPUT 6  (可以按照顺序号删除规则)
[[email protected] ~]# iptables -nvL --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target prot opt in out source   destination 
1  628 47972 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED
2  0 0 ACCEPT icmp --  *  *   0.0.0.0/00.0.0.0/0   
3  0 0 ACCEPT all  --  lo *   0.0.0.0/00.0.0.0/0   
4  0 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0state NEW tcp dpt:22
5  1   229 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target prot opt in out source   destination 
10 0 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 48 packets, 4592 bytes)
num   pkts bytes target prot opt in out source   destination

[[email protected] ~]# iptables -P INPUT DROP  (丢弃默认的规则,会断开会导致数据包无法传送回来,只能回服务器加载默认规则)

5)iptable小案例

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

#! /bin/bash
ipt="/usr/sbin/iptables"  (设置变量,尽量设置去全局变量)
$ipt -F  (首先清空之前的规则)
$ipt -P INPUT DROP  (定义策略)
$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.133.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
[[email protected] ~]# sh !$
sh /usr/local/sbin/iptables.sh
[[email protected] ~]# iptables -nvL --line-number  (查看添加之后的规则)
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target prot opt in out source   destination 
19   672 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED
20 0 ACCEPT tcp  --  *  *   192.168.133.0/24 0.0.0.0/0tcp dpt:22
30 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0tcp dpt:80
40 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0tcp dpt:21

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

Chain OUTPUT (policy ACCEPT 7 packets, 916 bytes)
num   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 --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target prot opt in out source   destination 
15   356 ACCEPT all  --  *  *   0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED
20 0 ACCEPT icmp --  *  *   0.0.0.0/00.0.0.0/0   
30 0 ACCEPT all  --  lo *   0.0.0.0/00.0.0.0/0   
40 0 ACCEPT tcp  --  *  *   0.0.0.0/00.0.0.0/0state NEW tcp dpt:22
50 0 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target prot opt in out source   destination 
10 0 REJECT all  --  *  *   0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 4 packets, 480 bytes)
num   pkts bytes target prot opt in out source   destination

icmp示例

[[email protected] ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP  (使用此命令可以使别的机器ping不同本机,但本机却可以ping通外机器)
[[email protected] ~]# ping www.qq.com
PING www.qq.com (182.254.34.74) 56(84) bytes of data.
64 bytes from 182.254.34.74 (182.254.34.74): icmp_seq=1 ttl=128 time=24.9 ms
64 bytes from 182.254.34.74 (182.254.34.74): icmp_seq=2 ttl=128 time=31.5 ms
64 bytes from 182.254.34.74 (182.254.34.74): icmp_seq=3 ttl=128 time=24.8 ms
64 bytes from 182.254.34.74 (182.254.34.74): icmp_seq=4 ttl=128 time=24.5 ms
64 bytes from 182.254.34.74 (182.254.34.74): icmp_seq=5 ttl=128 time=24.6 ms
^C
--- www.qq.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 8226ms
rtt min/avg/max/mdev = 24.518/26.128/31.554/2.721 ms
C:\Users\ma>ping 192.168.1.131
正在 Ping 192.168.1.131 具有 32 字节的数据:
请求超时。
请求超时。

192.168.1.131 的 Ping 统计信息:
数据包: 已发送 = 2,已接收 = 0,丢失 = 2 (100% 丢失)
Control-C
^C
[[email protected] ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP

C:\Users\ma>ping 192.168.1.131

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

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

二、iptables nat 表应用

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

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

1、添加网卡,设置成添加LAN字段,命名一个新的字段

2、在机器内操作修改ip
[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.1.131  netmask 255.255.255.0  broadcast 192.168.1.255
inet6 fe80::6aac:3e4d:6b3:73ee  prefixlen 64  scopeid 0x20<link>
ether 00:0c:29:ec:44:82  txqueuelen 1000  (Ethernet)
RX packets 110  bytes 10783 (10.5 KiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 130  bytes 14454 (14.1 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.1.145  netmask 255.255.255.0  broadcast 192.168.1.255
ether 00:0c:29:ec:44:82  txqueuelen 1000  (Ethernet)

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
ether 00:0c:29:ec:44:8c  txqueuelen 1000  (Ethernet)
RX packets 34  bytes 11628 (11.3 KiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 55  bytes 10362 (10.1 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[[email protected] ~]# ifconfig ens37 192.168.100.1/24  (直接设置IP的命令,重启后将不再有用,需要修改配置文件)
[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.1.131  netmask 255.255.255.0  broadcast 192.168.1.255
inet6 fe80::6aac:3e4d:6b3:73ee  prefixlen 64  scopeid 0x20<link>
ether 00:0c:29:ec:44:82  txqueuelen 1000  (Ethernet)
RX packets 344  bytes 30654 (29.9 KiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 313  bytes 41938 (40.9 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.1.145  netmask 255.255.255.0  broadcast 192.168.1.255
ether 00:0c:29:ec:44:82  txqueuelen 1000  (Ethernet)

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.100.1  netmask 255.255.255.0  broadcast 192.168.100.255
inet6 fe80::20c:29ff:feec:448c  prefixlen 64  scopeid 0x20<link>
ether 00:0c:29:ec:44:8c  txqueuelen 1000  (Ethernet)
RX packets 36  bytes 11748 (11.4 KiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 65  bytes 11170 (10.9 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(同样的方法将另一台机器ip设置为192.168.100.100)
[[email protected] ~]# ping 192.168.100.100
PING 192.168.100.100 (192.168.100.100) 56(84) bytes of data.
64 bytes from 192.168.100.100: icmp_seq=1 ttl=64 time=1.03 ms
64 bytes from 192.168.100.100: icmp_seq=2 ttl=64 time=0.461 ms
^C
--- 192.168.100.100 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.461/0.747/1.034/0.287 ms

3、准备工作完成之后,修改配置,添加规则

[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward
0  (0状态下表示未打开端口转发)
[[email protected] ~]# echo "1">/proc/sys/net/ipv4/ip_forward
[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward
1
[[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE  (添加规则)
[[email protected] ~]# 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 3 packets, 228 bytes)
 pkts bytes target prot opt in out source   destination 

Chain POSTROUTING (policy ACCEPT 3 packets, 228 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

4、在B机器上设置网关,为192.168.100.1,就可以进行通信

[[email protected] ~]# route add default gw 192.168.100.1  
设置完成之后就可以在机器上连接外网,但是在外网上是连接不到机器

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

A机器打开路由转发 echo "1">/ proc/sys/net/ipv4/ip_forward
A上执行          iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 (设置规则)
A上执行          iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130(设置规则)
B上设置网关为     192.168.100.1

知识点

1)iptables应用在一个网段

[[email protected] ~]#iptables -I INPUT -m iprange --src-range 61.4.176.0-61.4.191.255 -j DROP

2)iptables限制syn速率

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

3)sant,dnat,masquerade

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

4)-m state --state 后跟状态

原文地址:http://blog.51cto.com/13750987/2128618

时间: 2024-11-12 16:53:04

运维日常的相关文章

运维日常集合(个人向 坚持更新)

运维日常集合(个人向) 日常运维常用集合,分三部分 windows.linux.Python 得益于python工具便利性,使得运维的工作大大减少. Shell 清除其他终端 who //查看在线终端 pkill -9 -t pts/2 找出内存消耗的进程排序 ps aux --sort=-rss | head -n 4 找出CPU消耗的进程排序 ps aux --sort=-pcpu | head -4 持续 ping 并将结果记录到日志 ping api.jpush.cn | awk '{

系统运维日常工作有哪些,应该具备哪些技能

一.日常工作内容: 1.看监控.网站流量,CDN流量,看邮件有没有普通业务监控报警,看邮件中有没其他需要做的工作 2.处理报警,查看报警的原因,和开发一起解决,并且尽量找出避免再次发生的方法,例如添加一些 定时清理脚本 3.处理发布,基本都是自动化,但是总有发布不成功或者需要回滚的时候,这时候就需要手工介入, 找到原因,并跟开发一起讨论最后是否撤销还是重上 4.日常一起能够自动化的工作尽量找到自动化的方法 5.配合开发搭建测试环境,线上环境,上线代码,以及日常开个权限 6.定期机房巡检 7.灾备

运维日常:快速解决Redis问题

一.问题的存在日常报错: 日常解决分析:日常报错,首先是看日志,这是都是教训总结出来的经验啊...好了,这次是PHP报错,"Redis" not found,要么Redis扩展没装,要么Redis版本不兼容,还要么找不到Redis的默认安装路径.经过排查之后,发现是没装Redis扩展,可能在源码编译的时候,没有加入Redis扩展选项. 备注:其实没装Redis扩展也没什么,也就有一些网页显示不出来,严重的可能认为代码有问题,并不是运维的锅,最后升级发酵变成技术部内讧.当然,一般出错肯定

运维日常工作知识总结

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/1242890 1.  windows系统虚拟机自动安装vmtools 通过客户端连上esxi:客户机-安装vmtools 进入系统执行:cmd /ke:&&setup /s/v/qn(e:是光驱盘符) 2.结束用户会话 查看谁在登录系统:w Linux中踢出其他正在SSH登陆用户的命令:pkill -9 -t

运维日常1

一.使用w查看系统负载 w命令用于显示目前登入系统的用户信息.执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序.单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息 1.w命令格式:w [选项] [用户名称] 选项 -f  开启或关闭显示用户从何处登入系统 -h  不显示各栏位的标题信息列 -l  使用详细格式列表,此为预设值 -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间 -u  忽略执行程序的名称,以及该程

运维日常:Linux调用双版本PHP

1.当前系统状态 [[email protected] ~]# php -v PHP 5.6.31 (cli) (built: Nov 24 2017 12:37:03) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend Guard Loader v3.3, Copyright (c) 1998-2014, by Zend Te

运维日常:群发邮件营销平台--EDM

一.需求 1.概述 EDM营销(Email Direct Marketing)也叫:Email营销.电子邮件营销.是指企业向目标客户发送EDM邮件,建立同目标顾客的沟通渠道,向其直接传达相关信息,用来促进销售的一种营销手段.EDM软件有多种用途,可以发送电子广告.产品信息.销售信息.市场调查.市场推广活动信息等. 2.主要实现 2.1,选择邮件服务商不论您选择哪一个邮件营销服务商,你需要了解它们是如何进行列表的管理,并且自动清洗列表,最详细的邮件报告,强大的整合性以及内建的模板(可以让您自己上传

运维日常:五分钟搞定PHP的redis问题

一.前言 1.需求 2.解决LNMP环境中的PHP缺少redis扩展包,导致访问页面报错500,处理问题,安装PHP扩展功能redis. 下面记录整个过程,如果不想看,而只想在最短的时间内搞定这个问题,请直接翻到最后,使用脚本. 二.安装 1.下载扩展包 [[email protected] source]# git clone https://github.com/nicolasff/phpredis Cloning into 'phpredis'... remote: Enumerating

运维日常错误总结(docker)

一:Apache服务启动失败 报错原因:80端口被占用 分析:netstat -anp|grep 80 检查80端口的占用情况,发现是启动了nginx服务,占用了http服务 解决方式: 1:如nginx是临时用的,没有必要使用,可以杀死nginx进程 2:如若需要使用nginx服务,则需要把配置文件的监听端口给改掉,虽然是非默认端口,只要其他服务不会使用到就没问题,具体操作命令是 semanage port -a -t http_port_t -p tcp 888 vi /etc/httpd/