[转帖]centos7 firewall-cmd主机之间端口转发

centos7,firewall,cmd,主机,之间,端口,转发 · 浏览次数 : 0

小编点评

**1. firewalld1.1 firewalld守护进程** * 了解 firewalld 守护进程的作用 * 使用 systemctl 命令来控制 firewalld 守护进程 * 使用 `systemctl restart firewalld` 或 `firewall-cmd --reload` 命令重新启动守护进程 **2. 案例 2.1 配置ServerA2.2 安装nginx测试** * 安装 nginx * 修改页面显示内容,显示nginx安装成功 * 启动 nginx 服务 **2.3 开启端口 2.4 伪装IP 端口转发** * 使用 `firewall-cmd --add-masquerade` 命令配置防火墙伪装IP功能 * 设置 `firewalld --add-masquerade` 的 `source` 和 `dest` 参数 **2.6 配置ServerB 安装nginx** * 安装 nginx * 创建一个名为 `nginx.conf` 的配置文件 * 使用 `firewall-cmd --add-service` 命令将 nginx 服务添加到防火墙 * 使用 `firewall-cmd --reload` 命令重新加载防火墙配置文件 **2.7 修改nginx页面显示内容** * 打开 `/usr/share/nginx/html/index.html` 文件 * 添加以下代码到 `index.html` 中: ```html ProxyPass 80 http://serverb:80; ``` * 保存并重启 nginx 服务 **2.8 访问ServerB2.9 访问ServerA** * 使用 `firewall-cmd --add-forward-port` 命令将从 `servera` 上监听 80 端口转发到 `serverb` 上的 80 端口 * 使用 `firewall-cmd --list-ports` 命令检查转发设置是否正确 **3. 总结** * firewalld 是防火墙守护进程,需要使用 systemctl 命令来控制状态 * 可以使用 `firewall-cmd` 命令添加服务和端口转发规则 * 可以使用 `firewall-cmd` 命令配置伪装IP功能 * 可以修改nginx页面显示内容,添加虚拟主机和端口转发规则

正文

1. firewalld

1.1 firewalld守护进程

firewall-cmd命令需要firewalld进程处于运行状态。我们可以使用systemctl status/start/stop/restart firewalld来控制这个守护进程。firewalld进程为防火墙提供服务。

当我们修改了某些配置之后(尤其是配置文件的修改),firewall并不会立即生效。可以通过两种方式来激活最新配置systemctl restart firewalld和firewall-cmd --reload两种方式,前一种是重启firewalld服务,建议使用后一种“重载配置文件”。重载配置文件之后不会断掉正在连接的tcp会话,而重启服务则会断开tcp会话。

1.2 控制端口/服务

可以通过两种方式控制端口的开放,一种是指定端口号另一种是指定服务名。虽然开放http服务就是开放了80端口,但是还是不能通过端口号来关闭,也就是说通过指定服务名开放的就要通过指定服务名关闭;通过指定端口号开放的就要通过指定端口号关闭。还有一个要注意的就是指定端口的时候一定要指定是什么协议,tcp还是udp。知道这个之后以后就不用每次先关防火墙了,可以让防火墙真正的生效。

firewall-cmd --add-service=mysql # 开放mysql端口
firewall-cmd --remove-service=http # 阻止http端口
firewall-cmd --list-services  # 查看开放的服务
firewall-cmd --add-port=3306/tcp # 开放通过tcp访问3306
firewall-cmd --remove-port=80tcp # 阻止通过tcp访问3306
firewall-cmd --add-port=233/udp  # 开放通过udp访问233
firewall-cmd --list-ports  # 查看开放的端口
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1.3 伪装IP

防火墙可以实现伪装IP的功能,下面的端口转发就会用到这个功能。

firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
firewall-cmd --remove-masquerade# 禁止防火墙伪装IP
  • 1
  • 2
  • 3

1.4 端口转发

端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定ip的话就默认为本机,如果指定了ip却没指定端口,则默认使用来源端口。

如果配置好端口转发之后不能用,可以检查下面两个问题:

  • 比如我将80端口转发至8080端口,首先检查本地的80端口和目标的8080端口是否开放监听了
  • 其次检查是否允许伪装IP,没允许的话要开启伪装IP
# 将80端口的流量转发至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
# 将80端口的流量转发至
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.0.1192.168.0.1
# 将80端口的流量转发至192.168.0.1的8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。
  • 端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

2. 案例

要求用户访问ServerA主机的80端口流量都转发到ServerB,即用户访问ServerA时,实际是在访问ServerB
ServerA:CentOS Linux release 7.6.1810 (Core) 
ServerB:CentOS Linux release 7.6.1810 (Core) 
  • 1
  • 2
  • 3

2.1 配置ServerA

​如果没有开启防火墙,则需要开启

[root@servera ~]# systemctl start   firewalld
  • 1

在这里插入图片描述

2.2 安装nginx测试 (可选)

配置yum,就可以使用yum安装nginx

[root@servera ~]# vi /etc/yum.repos.d/ngin.repo 
[nginx]
name=aliyun epel
baseurl=http://mirrors.aliyun.com/epel/7Server/x86_64/
gpgcheck=0
  • 1
  • 2
  • 3
  • 4
  • 5

yum安装nginx

[root@servera ~]# yum install -y nginx
  • 1

编辑页面显示,区别显示主机

[root@servera ~]# vi /usr/share/nginx/html/index.html 
[root@servera ~]# systemctl start nginx 
  • 1
  • 2

在这里插入图片描述

2.3 开启端口

添加–permanent永久生效
在这里插入图片描述

访问测试
在这里插入图片描述

2.4 伪装IP

端口转发需要先开启伪装IP

[root@servera ~]# firewall-cmd --permanent --add-masquerade
  • 1
  • 2

在这里插入图片描述

2.5 端口转发

把访问本机的80端口的流量转发到10.5.80.106的80端口

[root@servera ~]# firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=80:toaddr=10.5.80.106
[root@servera ~]# firewall-cmd --reload
查看结果
[root@servera ~]# firewall-cmd --list-all
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

2.6 配置ServerB

安装nginx省略,本机可以不用开启防火墙

2.7 修改nginx页面显示内容

[root@serverb ~]# vi /usr/share/nginx/html/index.html 
[root@serverb ~]# systemctl start nginx 
  • 1
  • 2

在这里插入图片描述

2.8 访问ServerB

在这里插入图片描述

2.9 访问ServerA

在这里插入图片描述

需求完成!

文章知识点与官方知识档案匹配,可进一步学习相关知识
网络技能树首页概览32013 人正在系统学习中

与[转帖]centos7 firewall-cmd主机之间端口转发相似的内容:

[转帖]centos7 firewall-cmd主机之间端口转发

目录 1. firewalld1.1 firewalld守护进程1.2 控制端口/服务1.3 伪装IP1.4 端口转发 2. 案例2.1 配置ServerA2.2 安装nginx测试 (可选)2.3 开启端口2.4 伪装IP2.5 端口转发2.6 配置ServerB2.7 修改nginx页面显示内容

[转帖]CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网

https://www.cnblogs.com/hope250/p/8033818.html 自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源。而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个公网 I

[转帖]Centos使用firewall封攻击IP IP段

https://bbs.qunyingkeji.com/2020/ 1.查攻击的IP 命令:netstat -an | grep tcp 2.使用firewall 封IP 示例:要封的192.191.171.0/24范围 命令: firewall-cmd --permanent --add-rich

[转帖]centos7.6编写自己的启动服务,运行systemctl后卡住了的解决方案

https://www.cnblogs.com/niway/p/15346572.html 问题:centos7.6编写自己的启动服务,运行systemctl后卡住了,表现为当我执行systemctl命令后shell阻塞在那里,没有像平时执行命令那样自动结束(只能自己按Ctrl+C强制结束),情况如

[转帖]Centos7升级glibc导致系统异常(无法开机)解决方法

https://www.jb51.net/article/230473.htm 目录 我使用的是centos7(理论上这个方法仅仅对centos7以及Redhat7都可以使用该方法解决问题) 注意:此方法仅针对Redhat7/Centos7以上。 出现问题原因: 在调优hbase的时候,查资料发现可

[转帖]CentOS7搭建时间服务器-chrony

操作系统:CentOS7防火墙: 关闭防火墙和selinux时间软件:chronyCentOS7我们一直用的ntp时间服务器,虽然到CentOS7上也可以装ntp。chrony与ntp都是时间同步软件,两个软件不能够同时开启,会出现时间冲突.但是由于各种问题,所以建议CentOS7使用chrony同

[转帖]CentOS7/完美升级gcc版本方法

https://zhuanlan.zhihu.com/p/535657060 在某些应用场景中,需要特定的gcc版本支持,但是轻易不要去编译gcc、不要去编译gcc、不要去编译gcc,我这里推荐使用红帽提供的开发工具包来管理gcc版本,这样做的好处是随时切换版本,并且可以并存多个版本,不破坏原有gc

[转帖]CentOS7 ab压力测试安装与解释

#背景 Apache Benchmark(简称ab) 是Apache安装包中自带的压力测试工具 ,简单易用在此提供 ab 在 centOS7 下的安装和使用方法注:个人发现,之前安装的centos6.5 默认已安装了ab,具体原因不明 ①.ab(apache benchmark)安装 命令:# yu

[转帖]CentOS7完美升级gcc版本方法

https://blog.whsir.com/post-4975.html 在某些应用场景中,需要特定的gcc版本支持,但是轻易不要去编译gcc、不要去编译gcc、不要去编译gcc,我这里推荐使用红帽提供的开发工具包来管理gcc版本,这样做的好处是随时切换版本,并且可以并存多个版本,不破坏原有gcc

[转帖]Centos7 nginx访问日志文件割接

一、yum安装nginx 二、各文件路径( /etc/nginx/nginx.conf) 1、访问日志路径:access_log /var/log/nginx/access.log main; 2、pid路径:pid /run/nginx.pid 三、脚本 1、创建脚本 [root@localhos