CentOS 7下用firewall-cmd控制端口与端口转发详解

一、firewalld 守护进程

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

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

二、控制端口/服务

可以通过两种方式控制端口的开放,一种是指定端口号另一种是指定服务名。虽然开放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  # 查看开放的端口

三、伪装IP

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

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

四、端口转发

端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定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
  • 当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。
  • 端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • CentOS 7如何快速开放端口

    CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos 7使用firewalld代替了原来的iptables.下面记录如何使用firewalld开放Linux端口: 开启端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 命令含义: --zone #作用域 --add-port=80/tcp  #添加端口,格式为:端口/通讯协议 --permanent  #永久生效,没有此

  • CentOS 7 中firewall-cmd命令详细介绍

     CentOS 7 中firewall-cmd命令 在 CentOS 7 暂时开放 ftp 服务 # firewall-cmd --add-service=ftp 永久开放 ftp 服务 # firewall-cmd --add-service=ftp --permanent 永久关闭 # firewall-cmd --remove-service=ftp --permanent success 让设定生效 # systemctl restart firewalld 检查设定是否生效 # ipt

  • 如何在Centos 7快速开启端口

    介绍 CentOS 7 默认没有使用iptables,所以通过编辑iptables的配置文件来开启80端口是不可以的 CentOS 7 采用了 firewalld 防火墙 如要查询是否开启80端口则: [root@joe-pc ~]# firewall-cmd --query-port=80/tcp no 显然80端口没有开启 下面我们开启80端口: [root@joe-pc ~]# firewall-cmd --add-port=80/tcp success 总结 以上就是在Centos 7快

  • Centos查看端口占用情况和开启端口命令详解

    Centos查看端口占用情况命令,比如查看80端口占用情况使用如下命令: lsof -i tcp:80 列出所有端口 netstat -ntlp  1.开启端口(以80端口为例) 方法一: /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 写入修改 /etc/init.d/iptables save 保存修改 service iptables restart 重启防火墙,修改生效 方法二: vi /etc/sysconfig/iptables

  • linux系统对外开放3306、8080等端口,防火墙设置详解

    我们很多时候在liunx系统上安装了web服务应用后(如tomcat.apache等),需要让其它电脑能访问到该应用,而linux系统(centos.redhat等)的防火墙是默认只对外开放了22端口. linux系统的端口设置在/etc/sysconfig/iptables文件中配置.使用编辑器打开该文件.内容如下: # Firewall configuration written by system-config-firewall # Manual customization of this

  • windows系统下node.js环境配置与安装教程图文详解(详细版)

    国内目前关注最高,维护最好的一个关于nodejs的网站应该是http://www.cnodejs.org/ windows系统下简单nodejs环境配置. 第一步:下载安装文件 下载地址:官网https://nodejs.org/en/download/ 这里用的是 第二步:安装nodejs 下载完成之后,双击 node-v6.9.1-x64.msi,开始安装nodejs,默认是安装在C:\Program Files\nodejs下面 第三步:安装相关环境 打开C:\Program Files\

  • Javascript异步流程控制之串行执行详解

    这篇文章主要讲一下如何串行执行一组异步任务,例如有下面几个任务,在这里我们用setTimeout模拟一个异步任务: let taskA = () => setTimeout(() => console.log('run task A'), 100); let taskB = () => setTimeout(() => console.log('run task B'), 50); let taskC = () => setTimeout(() => console.l

  • Spring Boot 控制层之参数传递方法详解

    当然,您自己创建一个项目也是可以的. bean包下的Student.java package com.example.demo.bean; public class Student { private Integer id; //学号 private String name; //姓名 public Student() { } public Student(Integer id, String name) { this.id = id; this.name = name; } public In

  • Linux、Windows下Redis的安装即Redis的基本使用详解

    目录 前言 什么是Redis 使用Redis能做什么 Redis入门 Redis简介 Redis下载与安装 Redis下载 Redis安装 Redis服务启动与停止 Ctrl + C停止Redis服务 Ctrl + C停止Redis服务 Redis配置文件 Redis常用命令 字符串string操作命令 哈希hash操作命令 列表list操作命令 集合set操作命令 通用命令 在Java中操作Redis Jedis Spring Data Redis 使用方式 环境搭建 前言 什么是Redis

  • nodejs express路由匹配控制及Router模块化使用详解

    目录 路由控制匹配 Router模块化路由 使用方式 对比app上的路由 总结 路由控制匹配 本文主要分析下express的核心功能路由的使用. express路由的匹配规则: 支持模糊匹配,同一个路由可能命中多个定义的路由 router.get("/user/*",(req,res,next)=>{ console.log("====demo====") }) router.get("/user/list",(req,res,next)=

  • linux 查看端口占用命令实例详解

     linux 查看端口占用命令实例详解 端口是系统非常重要的一个东东,我们经常需要查看哪个进程占用了哪个端口,或者哪个端口被哪个进程占用.废话不多说,直接上干货,教大家怎样查看系统端口占用情况. 方法一: 1.先用ps -ef | grep xxx(某个进程),可以查看某个进程的pid. 2.再用netstat -anp | grep pid号,可以查看到该进程占用的端口号! 方法二: 直接用lsof命令可以查看端口使用情况! 以上就是对linux 查看端口占用命令的讲解,如有疑问请留言,或者到

  • python下os模块强大的重命名方法renames详解

    python下os模块强大的重命名方法renames详解 在python中有很多强大的模块,其中我们经常要使用的就是OS模块,OS模块提供了超过200个方法来供我们使用,并且这些方法都是和数据处理相关的,这里介绍下重命名这个方法. OS的重命名方法是os.rename,我用的ipython,这个玩意很是强大,只要按下TAB键,可以帮助我们自动对齐和列出可以使用的方法,发现有2个方法,分别是rename和renames,2个方法,前面的rename使用过无数次,但是后面的renames还没有使用过

  • Android 控制ScrollView滚动的实例详解

    Android 控制ScrollView滚动的实例详解 在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public static void scrollToBottom(final View scroll, final View inner) { Handler mHandler = new Handler(); mHandler.post(new Runnable() { public void run()

  • linux下安装python3和对应的pip环境教程详解

    1.下载python3.6的安装包: wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz 2.解压后,进入到解压目录下,执行如下命令,将python3.6进行编译,如下是将python的环境编译到/usr/local/python3的目录下,注意先创建该目录: ./configure –prefix=/usr/local/python3 3.安装 make make install 4.安装完成后,为了使用方便,创建软连接:

随机推荐