红帽学习记录[RHCE] 防火墙与网络合作
防火墙
基本介绍
使用firewalld对防火墙进行管理。firewalld是Red Hat Enterprise Linux 7用于管理主机级别防火墙的默认方法。
注:firewalld.service 与 iptables.service、ip6tables.service、ebtables.service服务彼此冲突,所以为了防止意外启动其中一个,可以把他们mask掉
systemctl mask iptables
systemctl mask ip6tables
systemctl mask ebtables
firewalld 区域zone
firewalld将传入的流量划分成不同的区域zone,不同的zone可以配置不同的规则。
- 哪个
zone的规则在起作用?
`按照如下的规则匹配,优先级依次降低`
1. 如果传入包的原地址与区域中某个原规则设置相匹配,该包将通过该`zone`路由
2. 如果包的传入的接口与`zone`的过滤器设置匹配,该包将通过该`zone`路由
3. 如果都没匹配的话会使用默认的`zone`,默认安装时的默认`zone`是`public`可以更改
firewalld区域的默认配置
# trusted
允许所有流量传入
# home
除非与传出流量相关,或与ssh\mdns\ipp-client\samba-client\dhcpv6-client预定义服务匹配否则拒绝传入流量
# internal
开始时与`home`配置相同
# work
除非与传出流量相关,或与ssh\ipp-client\dhcpv6-client预定义服务匹配否则拒绝传入流量
# public
除非与传出流量相关,或与ssh\dhcpv6-client预定义服务匹配否则拒绝传入流量
管理firewalld
1. 使用命令行工具`firewalld-cmd`。需要安装推行界面
2. 使用图形工具`firewall-config`
3. 直接更改`/etc/firewalld`配置文件。不建议。
firewall-cmd命令介绍
| 命令 | 说明 |
|---|---|
| --get-default-zone | 查询当前默认区域 |
| --set-default-zone= | 设置默认区域 |
| --get-zones | 列出所有可用区域 |
| --get-services | 列出所有预定义服务 |
| --get-active-zones | 列出当前正在使用的所有区域 |
| --add-source= | 将来自IP地址或网络、子网掩码的所有流量指定到区域 |
| --remove-source | 删除 |
| --add-interface | 将来自的流量路由到指区域,interface就是虚机的链接的网卡 |
| --change-interface | 修改 |
| --list-all --zone= | 列出所有配置默认zone可指定 |
| --list-all-zones | 列出所有的zone的配置 |
| --add-service | 允许某个service的流量 |
| --remove-service | 删除 |
| --add-port | 增加端口。格式[222/tcp] |
| --remove-port | 删除 |
| --reload | 重新加载防护墙配置 |
| --permanent | 永久修改防护墙配置 |
- 注意
修改防火墙配置一定要有两步临时修改与永久修改
1. 永久修改一次临时修改一次
firewall-cmd --set-default-zone
firewall-cmd --set-default-zone trusted --permanent
2. 永久修改一次,reload一下
firewall-cmd --set-fefault-zone trusted --permanent
- 做的实验当中,无论启动了什么服务,都需要在防火墙中添加,还有一些端口也需要添加
关于富规则
定义
富规则为管理员提供了一种表达性的语言,来定义防火墙自身带有之外的规则。例如:允许单IP地址 。富规则可以表达允许、拒绝规则,也可以配置记录、端口转发、伪装、速率限制等。
firewalld操作富规则的命令
1. --add-rich-rule
2. --remove-rich-rule
3. --query-rich-rul
4. --list-rich-rules
语法
可查看 man 5 firewalld.richlanguage
- 基本规则
General rule structure
rule
[source]
[destination]
service|port|protocol|icmp-block|masquerade|forward-port
[log]
[audit]
[accept|reject|drop]
- 说明
1. rule:
rule [family="ipv4|ipv6"]
2. [source] 可选,链接的来源ip
source address="ip/mask"
3. [Destination]可选,目的
destination address="ip/mask"
4. service|port|protocol|icmp-block|masquerade|forward-port
必选服务、端口、协议、伪装、端口转发
5. [log] 可选,
记录进来的链接[prefix=前缀[level=级别limit value=rate/duration频次每duration最多rate次
6. [audit]
7. [accept|reject|drop]
接受、拒绝、丢弃
常用的示例
- 监听服务
httpd,并输出log
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.143.11/24 service name="http" log level=notice prefix="Test log" limit value="1/s" accept'
firewall-cmd --reload
# 在服务器192.168.143.11上 curl 192.168.143.10
[root@rhel2 ~]# curl 192.168.143.10
# 检测192.168.143.10 /var/log/messages
[root@rhel1 Desktop]# grep "Test log" /var/log/messages
Nov 25 19:22:20 rhel1 kernel: Test logIN=eno16777736 OUT= MAC=00:0c:29:fb:7d:19:00:0c:29:10:6a:95:08:00 SRC=192.168.143.11 DST=192.168.143.10 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=28126 DF PROTO=TCP SPT=35439 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0
- 禁止刚才的
ip访问10的http服务
# 删除刚才的富规则,添加如下规则、
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.143.11/24 service name="http" reject'
firewall-cmd --reload
# 再通过11服务器访问
[root@rhel2 ~]# curl 192.168.143.10
curl: (7) Failed connect to 192.168.143.10:80; Connection refused
IP伪装,将内部IP伪装成某个IP发送出去
# 将局域网中的 IP `192.168.143.10[RHEL1]` 伪装成`192.168.245.11[RHEL2]`发送出去
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.143.12/24 masquerade"
firewall-cmd --reload
# 我们在rhel1上 ssh到 192.168.245.10[RHEL3]这个ip上
# 我们在RHEL3上对 ssh服务做了log
[root@rhel3 ~]# grep "SSH" /var/log/messages
Nov 25 19:05:05 rhel3 kernel: SSH LOG:IN=eno50332216 OUT= MAC=00:0c:29:07:88:32:00:0c:29:10:6a:a9:08:00 SRC=192.168.245.11 DST=192.168.245.10 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=63405 DF PROTO=TCP SPT=46855 DPT=22 WINDOW=14600 RES=0x00 SYN URGP=0
# 可以看到SRC是 192.168.245.11
- 端口转发,将外部进来的链接转发到别处
# 在RHEL2上提供httpd服务
## 别忘了防火墙放行
[root@rhel2 html]# curl localhost
rhel2
# 在RHEL3 上同样提供httpd服务
## 别忘了防火墙放行
[root@rhel3 html]# curl localhost
rhel3
# 在RHEL2上 开启端口转发
[root@rhel2 ~]# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.245.10
success
# 在RHEL1上访问
[root@rhel1 Desktop]# curl 192.168.140.11
rhel3
网络合作
通过网络合作,以一种逻辑方式将两块网卡绑在一起对外服务,实现故障转移与更高的吞吐量。这个逻辑方式就是网络组
链路聚合
在RHEL1上再准备两块网卡
[root@rhel1 Desktop]# nmcli device show
GENERAL.DEVICE: eno67109440
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:FB:7D:37
GENERAL.MTU: 1500
GENERAL.STATE: 30 (disconnected)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: on
GENERAL.DEVICE: eno83886664
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:FB:7D:41
GENERAL.MTU: 1500
GENERAL.STATE: 30 (disconnected)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: on
配置网络组team0
- 网络组使用的运行程序
# 创建组接口时通过`config`指定
## 语法
config '{"runner":{"name":"METHOD"}}'
## 类型
broadcast:广播模式,只有冗余机制,有点浪费资源
roundrobin:轮询调度,把请求轮流费赔给内部服务器
activebackup:主备,只有一个内部服务器保持工作,故障转移
loadbalance:负载均衡,监控流量尝试在选择传输端口的时候达到完美均衡
lacp:利用LACP协议进行聚合
# 创建一个主备模式的 网络组
nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
# 分配IP地址
# ip随便配一个
nmcli connection modify team0 ipv4.addresses "192.168.200.100/24" ipv4.method manual
- 将两个新的准好的新的两个
接口添加到team0上
nmcli connect add type team-slave con-name team0-port1 ifname eno67109440 master team0
nmcli connect add type team-slave con-name team0-port2 ifname eno83886664 master team0
# 查看当前网络组的状态,可以看到当前工作的是 eno67109440
[root@rhel1 Desktop]# teamdctl team0 state
setup:
runner: activebackup
ports:
eno67109440
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
eno83886664
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
runner:
active port: eno67109440
- 验证主备
# 通过team0 ping本地网关
ping -I team0 0.0.0.0
[root@rhel1 Desktop]# nmcli device disconnect eno67109440
[root@rhel1 Desktop]# teamdctl team0 state
setup:
runner: activebackup
ports:
eno83886664
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
runner:
active port: eno83886664
# 而另一边的ping命令没有断
网络组的文件
[root@rhel1 .ssh]# cat /etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
DEVICETYPE=Team
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=team0
UUID=5d30ce30-7c39-44ea-b170-04dd21d2a3fd
ONBOOT=yes
IPADDR0=192.168.200.100
PREFIX0=24
GATEWAY0=192.168.200.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
网络组命令
teamnl
teamdctl
桥接
网桥是一个链路层设备,可基于MAC地址在网络之间转发流量。
# 再次添加一个网卡
nmcli device show
GENERAL.DEVICE: eno100663888
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:FB:7D:4B
GENERAL.MTU: 1500
GENERAL.STATE: 30 (disconnected)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: on
# 增加一个网桥
## 在创建的时候就指定好 ipv4 后来modify不起作用
nmcli connection add type bridge con-name br0 ifname br0 ip4 192.168.150.100/24 gw4 192.168.150.1
# 添加接口
nmcli connection add type bridge-slave con-name br0-port0 ifname eno100663888 master br0
# 检查是否能ping通本地网关
[root@rhel1 Desktop]# ping -I br0 0.0.0.0
红帽学习记录[RHCE] 防火墙与网络合作的更多相关文章
- 红帽学习记录[RHCE] ISCSI远程块储存
目录 iSCSI 定义 组件术语 启动器 目标 ACL 发现 IQN 登录 LUN 节点 门户 TPG 搭建一个iSCSI服务 提供一个iSCSI目标 配置iSCSI客户端 iSCSI 定义 SCSI ...
- 红帽学习笔记[RHCE]网络配置与路由转发
目录 网络配置基本的IPV4与IPV6 拓扑图 操作 新加一块网卡 将增加的网卡分别加到两台虚拟机上 在两台虚拟机上配置IPV4与 IPV6 配置域名访问 拓展路由转发 拓扑图 操作 关于网关设置 重 ...
- 红帽学习笔记[RHCE]OpenLDAP 服务端与客户端配置
目录 OpenLDAP 服务端与客户端配置 关于LDIF 一个LDIF基本结构一个条目 属性 Object的类型 服务端 安装 生成证书 生成默认数据 修改基本的配置 导入基础数据 关于ldif的格式 ...
- 红帽学习笔记[RHCSA] 第二周
目录 红帽学习笔记[RHCSA]第二周 环境 第七课[网络配置相关] 在Vmware中添加网卡 将网卡添加到虚拟机上 关于网卡命名规则 配置网络 网络配置命令总结 更改hostname 关于SSH的一 ...
- UWP学习记录9-设计和UI之控件和模式6
UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...
- UWP学习记录8-设计和UI之控件和模式5
UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...
- Python学习记录day5
title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...
- Matlab 进阶学习记录
最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal = proposal_config('image_means', ...
- 【转】BLE 学习记录
原文网址:http://m.blog.csdn.net/blog/chiooo/43985401 BLE 学习记录 ANROID BLE 开发,基于 bluetoothlegatt 分析 mBluet ...
随机推荐
- Arduino学习笔记⑧ 红外通信
1.前言 红外通信是一种利用红外光编码进行数据传输的无线通信方式,在目前来说是使用非常广泛的.生活中常见电视遥控器,空调遥控器,DVD遥控器(现在估计是老古董了),均使用红外线遥控.使用红外线 ...
- python问题:IndentationError:expected an indented block
Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱当中.最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分 ...
- [正确配置]win7 PL/SQL 连接Oralce 11g 64位
PL/SQL 版本号:15.0.5.1710 32位 win7 64位系统 instantclient 12.1 32位,PL/SQL不支持64位 关键问题 1.Not logged on 2.没有c ...
- 小程序多端差异调研报告(微信,支付宝,头条,QQ)
已经使用uni-app开发并发布了一个跨端小程序啦,嘻嘻嘻!
- ubuntu18.04 flink-1.9.0 Standalone集群搭建
集群规划 Master JobManager Standby JobManager Task Manager Zookeeper flink01 √ √ flink02 √ √ flink03 √ √ ...
- 【问题记录】VMware Tools是灰色的,不能安装
一.VMware Tools简介 VMware Tools 中包含一系列服务和模块,可在 VMware 产品中实现多种功能,从而使用户能够更好地管理客户机操作系统,以及与客户机操作系统进行无缝交互. ...
- Linux nfs服务介绍
nfs服务介绍 nfs(Network File System) 网络文件系统,能使用户访问服务器的文件系统,就像访问自己的本机的文件系统一样,并且多个 客户端共享访问该文件系统. 目前nfs服务,较 ...
- html中<button>标签的type
HTML的<button>标签的type主要有三种可选值,reset.submit.button. 其中reset为重置按钮,用于清除form表单的数据:submit为提交按钮,点击后会对 ...
- CSPS模拟 77
%%两位AK爷zkt和skyh T1 位间独立,分别讨论 T2 维护标记,代替移位 T3 同一点对,多种联通,没法搞. 发现最多四路连通,考虑容斥. 显然的奇加偶减. 发现统计某种颜色的点之间的联通数 ...
- Vue+element UI实现分页组件
介绍 这是一个是基于element-UI的分页组件基础上,进行了二次封装的分页组件,在展示数据时,该分页组件采用了每显示一页数据,只请求当前页面的数据的请求策略,从而避免了一次性将数据全部请求所造成的 ...