开发喵星球

# Linux放行端口详解

更新:2023-05-17 18:43

一、Linux放行端口命令

Linux放行端口一般使用iptables命令,iptables是Linux操作系统中常用的防火墙程序。它可以通过规则来过滤和转发网络数据包,实现网络安全策略。具体可以使用以下命令:

iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT

其中,-A表示在规则链的后面添加新规则;-p表示协议类型,本例使用tcp协议;–dport表示目标端口号;-j表示在匹配目标后要执行的动作,本例中是ACCEPT即放行,还可以选择DROP或REJECT等动作。

添加完规则后,需要保存:

service iptables save

二、iptables放行端口命令

在iptables规则链中,还有几个常用的参数:

例如,我们可以通过以下命令在规则链开头添加一个放行8080端口的规则:

iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

我们可以通过以下命令查看规则链中的所有规则:

iptables -L

三、Linux查看防火墙状态

在Linux中,可以通过以下命令查看防火墙状态:

service iptables status

如果输出结果中显示 iptables: Firewall is not running,则表示防火墙未启动。

四、Linux放行IP和端口

如果需要放行某个特定IP地址和端口号,则可以使用以下命令:

iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT

其中,-s表示源IP地址,可以用来限制来自特定IP的访问,如果是全网放行,则可以省略-s参数,如下:

iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT

五、Linux关闭指定端口

如果需要关闭指定端口,则可以使用以下命令:

iptables -A INPUT -p tcp --dport 端口号 -j DROP

其中,-j参数设置成DROP即可。关闭指定端口后,再用L命令就可以看到相应的规则。

六、Linux怎么放行全部端口

如果要放行全部端口,则可以使用以下命令:

iptables -P INPUT ACCEPT

这条命令的意思是把INPUT规则链中默认策略设置为ACCEPT,即放行全部端口。如果需要关闭全部端口,则可以使用以下命令:

iptables -P INPUT DROP

这条命令的意思是把INPUT规则链中默认策略设置为DROP,即关闭全部端口。

七、Linux端口开放查询

在Linux中,可以使用netstat命令查看当前各个端口的开放情况:

netstat -an | grep LISTEN

该命令会输出所有处于监听状态的端口信息。

八、Linux防火墙怎么放行端口

根据前面的介绍,可以通过iptables命令在规则链中添加放行指定端口的规则,也可以设置默认策略为放行。下面是一个完整的例子:

#关闭输入所有端口
iptables -P INPUT DROP

#放行回环地址(本机IP)
iptables -A INPUT -i lo -j ACCEPT

#放行http协议端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#放行https协议端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#放行ssh协议端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#保存规则
service iptables save

#重启防火墙
systemctl restart iptables.service

以上规则的作用是关闭所有输入端口,并且放行本机IP、http、https和ssh协议的端口。保存规则后,使用service iptables status命令可以查看当前防火墙状态。

九、Linux关闭端口和禁用端口

如果需要关闭某个端口,则可以使用iptables命令把相应的规则删除。例如,要关闭80端口,则可以使用以下命令:

iptables -D INPUT -p tcp --dport 80 -j ACCEPT

如果需要禁用某个端口,则可以使用iptables命令把相应的规则修改为DROP。例如,要禁用80端口,则可以使用以下命令:

iptables -A INPUT -p tcp --dport 80 -j DROP

以上命令会在INPUT规则链中添加一个禁用80端口的规则。Linux放行端口详解

更新:2023-05-17 18:43

一、Linux放行端口命令

Linux放行端口一般使用iptables命令,iptables是Linux操作系统中常用的防火墙程序。它可以通过规则来过滤和转发网络数据包,实现网络安全策略。具体可以使用以下命令:

iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT

其中,-A表示在规则链的后面添加新规则;-p表示协议类型,本例使用tcp协议;–dport表示目标端口号;-j表示在匹配目标后要执行的动作,本例中是ACCEPT即放行,还可以选择DROP或REJECT等动作。

添加完规则后,需要保存:

service iptables save

二、iptables放行端口命令

在iptables规则链中,还有几个常用的参数:

例如,我们可以通过以下命令在规则链开头添加一个放行8080端口的规则:

iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

我们可以通过以下命令查看规则链中的所有规则:

iptables -L

三、Linux查看防火墙状态

在Linux中,可以通过以下命令查看防火墙状态:

service iptables status

如果输出结果中显示 iptables: Firewall is not running,则表示防火墙未启动。

四、Linux放行IP和端口

如果需要放行某个特定IP地址和端口号,则可以使用以下命令:

iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT

其中,-s表示源IP地址,可以用来限制来自特定IP的访问,如果是全网放行,则可以省略-s参数,如下:

iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT

五、Linux关闭指定端口

如果需要关闭指定端口,则可以使用以下命令:

iptables -A INPUT -p tcp --dport 端口号 -j DROP

其中,-j参数设置成DROP即可。关闭指定端口后,再用L命令就可以看到相应的规则。

六、Linux怎么放行全部端口

如果要放行全部端口,则可以使用以下命令:

iptables -P INPUT ACCEPT

这条命令的意思是把INPUT规则链中默认策略设置为ACCEPT,即放行全部端口。如果需要关闭全部端口,则可以使用以下命令:

iptables -P INPUT DROP

这条命令的意思是把INPUT规则链中默认策略设置为DROP,即关闭全部端口。

七、Linux端口开放查询

在Linux中,可以使用netstat命令查看当前各个端口的开放情况:

netstat -an | grep LISTEN

该命令会输出所有处于监听状态的端口信息。

八、Linux防火墙怎么放行端口

根据前面的介绍,可以通过iptables命令在规则链中添加放行指定端口的规则,也可以设置默认策略为放行。下面是一个完整的例子:

#关闭输入所有端口
iptables -P INPUT DROP

#放行回环地址(本机IP)
iptables -A INPUT -i lo -j ACCEPT

#放行http协议端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#放行https协议端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#放行ssh协议端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#保存规则
service iptables save

#重启防火墙
systemctl restart iptables.service

以上规则的作用是关闭所有输入端口,并且放行本机IP、http、https和ssh协议的端口。保存规则后,使用service iptables status命令可以查看当前防火墙状态。

九、Linux关闭端口和禁用端口

如果需要关闭某个端口,则可以使用iptables命令把相应的规则删除。例如,要关闭80端口,则可以使用以下命令:

iptables -D INPUT -p tcp --dport 80 -j ACCEPT

如果需要禁用某个端口,则可以使用iptables命令把相应的规则修改为DROP。例如,要禁用80端口,则可以使用以下命令:

iptables -A INPUT -p tcp --dport 80 -j DROP

以上命令会在INPUT规则链中添加一个禁用80端口的规则。一、Docker 的作用和优势
软件集装箱化平台,可让开发者构建应用程序时,将它与环境一起打包到一个容器中,发布应用到任意平台中。
能在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,
如:Tomcat运行在一个Docker,MySQL运行在另外一个Docker,两者可以运行在同一个服务器。

1.1、docker基本组成
1.docker client 客户端
docker客户端输入指令,驱动服务端执行对应操作。

2.docker daemon docker 守护进程
Docker的守护进程,客户端向Daemon发送命令去执行Docker相关操作,得到结果再通过Daemon将结果返回。

3.docker images 镜像
Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

4.docker container 容器
镜像相当于Java中的类,容器就像实例化后的对象,一个镜像可以实例化多个容器,容器通过镜像启动。
镜像中的应用程序运行后形成的进程就是容器,是Docker会给容器进程做隔离,对外不可见。
Docker容器通过镜像启动,容器是Docker的执行单元,容器中可以运行客户的多个进程。

5.docker registry 镜像仓库
Docker用仓库保存用户创建的镜像,仓库分共有和私有两种。
Docker公司自己提供了最大的公有仓库Docker Hub,可在Docker Hub上创建账户,保存分享自己创建的镜像。

1.2、Docker优势
1.简化配置、打包软件、快速部署
能将环境和配置放入代码然后部署,Docker配置能在各种环境中使用,将应用环境和底层环境解耦。
Docker通过创建进程的容器,不必重新启动操作系统,几秒内能关闭。

2.代码管道化管理
对代码以流式pipeline管道化进行管理,从开发者的机器到生产环境机器这个流程中都能有效管理。
Docker提供了跨越异构环境以一致性的微环境,从开发到部署实现流畅发布。

3.应用隔离、网络建模、开发生产化、服务合并
多个应用服务部署在多个Docker中相互隔离,
可在一台机器上启动数百个(甚至数千个)相互隔离的容器,对网络进行建模。
单机上最大程度模拟生产分布式部署的环境
Docker能合并多个服务,不多的操作系统内存占用,跨实例共享多个空闲的内存。

二、基本操作
2.1、Linux安装Docker

yum 包更新到最新

sudo sudo yum update

下载关于Docker的依赖环境

sudo yum -y install yum-utils device-mapper-persistent-data lvm2

设置镜像下载Docker的镜像源

sudo yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker

sudo yum makecache fast
sudo yum -y install docker-ce

查看docker版本,出现输入的界面都按 y

docker -v
2.2、Docker启动、停止

启动docker:

systemctl start docker

停止docker:

systemctl stop docker

重启docker:

systemctl restart docker

查看docker状态:

systemctl status docker

开机启动:

systemctl enable docker

设置开机自动启动

systemctl enable docker

测试

docker run hello-world

查看docker概要信息

docker info

查看docker帮助文档

docker –help
2.3、镜像操作

拉取镜像到本地 例:docker pull centos:7

docker pull 镜像名称 (在hub.docker.com(官方docker镜像仓库)右侧有拉取镜像的地址)

查看全部本地镜像

docker images

删除本地镜像1

docker image rm 镜像id

删除所有镜像

docker rmi docker images -q

修改镜像名称

docker tag 镜像id 新镜像名称:版本
2.4、容器操作

进入容器 例:docker exec -it haoshun /bin/bash

docker exec 参数 容器id或者容器名 /bin/bash # 退出容器,容器不会关闭

查看所有容器

docker ps –a

查看正在运行的容器

docker ps

查看最后一次运行的容器

docker ps –l

查看停止的容器

docker ps -f status=exited

格式化查看

docker ps -a –format "table {{.Image}}\t{{.ID}}\t{{.Ports}}\t{{.Names}}"

启动容器:

docker start 容器名称(或者容器ID)

停止容器:

docker stop 容器名称(或者容器ID)

删除容器:如果是运行状态则删除失败,需要停止容器才能删除

docker rm 容器名称或者容器id

交互式方式创建容器

docker run -it –name=容器名称 镜像名称:标签 /bin/bash

守护式方式创建容器:

docker run -di –name=容器名称 镜像名称:标签

登录守护式容器方式:

docker exec -it 容器名称 (或者容器ID) /bin/bash

# 容器保存为镜像 容器ID 镜像名称:版本
docker commit mynginx mynginx_i 
# 镜像备份 将镜像保存为tar 文件
docker  save -o mynginx.tar mynginx_i 
# 镜像恢复与迁移 先删除掉mynginx_img镜像 然后执行此命令进行恢复
docker load -i mynginx.tar
# 配置数据卷 例:docker run -it --name=test2 -v /vagrant/test_data2:/home/test_data2:/home/test_data3 ubuntu:16.04
docker run ... -v 宿主机目录(文件):容器内目录(文件)...

# 退出当前容器
exit

2.5、Docker私有仓库

拉取私有仓库镜像 registry镜像搭建属于我们自己的私有仓库

docker pull registry

从私有仓库拉取镜像

docker pull 私有仓库服务器ip:5000/centos:7

启动私有仓库容器

docker run -di –name=registry -p 5000:5000 registry
2.6、简单应用部署示例
MySQL部署

拉取mysql镜像

docker pull centos/mysql-57-centos7

创建容器

docker run -di –name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

tomcat部署

拉取镜像

docker pull tomcat:7-jre7

创建容器 -p表示地址映射

docker run -di –name=mytomcat -p 9000:8080
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

Nginx部署

拉取镜像

docker pull nginx

创建Nginx容器

docker run -di –name=mynginx -p 80:80 nginx

Redis部署

拉取镜像

docker pull redis

创建容器

docker run -di –name=myredis -p 6379:6379 redis
三、高级应用
3.1、搭建主从 MySql
3.1.1、安装主从 Mysql 、修改配置文件
1.安装

安装主从 Mysql 、修改配置文件

docker内部安装vim

apt-get updateapt-get install vim

下载8.0.19版本:

docker pull mysql:8.0.19

查看mysql镜像:

docker images

docker容器是相互隔离的,容器有独立IP,不同容器用相同的端口不会冲突

启动 Master 容器

docker run -p 3306:3306 –name mysql-master -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:8.0.19

启动 Slave 容器

docker run -p 3307:3306 –name mysql-slave -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:8.0.19

查看 MySql 运行情况

docker ps -a

2.改配置文件

进入到Master容器内部,使用容器ID或者名称均可:

docker exec -it 8b71301f25ed /bin/bash //8b71301f25ed为容器ID
docker exec -it mysql-master /bin/bash //mysql-master为容器名称

切换到 /etc/mysql 目录下

编辑 master的 my.cnf文件

vim my.cnf

[mysqld]

同一局域网内注意要唯一

server-id=100

开启二进制日志功能,可以随便取(关键)

log-bin=master-bin
binlog-format=ROW // 二级制日志格式,有三种 row,statement,mixed
binlog-do-db=数据库名 //同步的数据库名称,如果不配置,表示同步所有的库

退出docker容器 重启 mysql-master

docker restart mysql-master

编辑 slave 的 my.cnf文件

vim my.cnf

[mysqld]

设置server_id,注意要唯一

server-id=101

开启二进制日志功能,以备Slave作为其它Slave的Master时使用

log-bin=mysql-slave-bin

relay_log配置中继日志

relay_log=mysql-relay-bin
read_only=1 ## 设置为只读,该项如果不设置,表示slave可读可写

退出docker容器 重启 mysql-slave

docker restart mysql-slave
3.1.2、开启Master-Slave主从复制
1.查看Master的信息

进入Master库mysql客户端:查看Master状态,记住File、Position

show master status

容器id查询容器的IP进行查询:

docker inspect –format='{{.NetworkSettings.IPAddress}}’ mysql-master

2.Slave 连接 Master

进入到Slave库myslq客户端,执行命令。

change master to master_host=’172.17.0.2′, master_user=’root’, master_password=’12345678′, master_port=3306, master_log_file=’master-bin.000001′, master_log_pos=3552, master_connect_retry=30;
master_host :Master库的地址,指的是容器的独立ip,可以通过
docker inspect –format='{{.NetworkSettings.IPAddress}}’ 容器名称 | 容器id查询容器的IP进行查询:
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

3.查看 Slave 连接情况

启动slave

start slave

查询slave

show slave status \G;

3.2、极简版搭建私有仓库
##获取官方镜像
[root@server1 ~]# docker pull registry
[root@server1 ~]# docker images registry

##以该镜像为基础,启动容器
[root@server1 ~]# docker run -d –name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry

##上传镜像(需要先更改镜像名称,以指定上传的仓库)
[root@server1 ~]# docker tag webserver:latest localhost:5000/webservr:latest
[root@server1 ~]# docker push localhost:5000/webservr ##上传

##查看挂载的地址
[root@server1 ~]# tree /opt/registry

##查看所挂载的镜像
[root@server1 ~]# curl localhost:5000/v2/_catalog

向私有仓库上传、下载镜像

#1.docker tag重命名需要上传的镜像
docker tag IMAGE 服务器IP:端口/IMAGE_NAME

2.docker push上传刚刚重命名的镜像

docker push 服务器IP:端口/IMAGE_NAME

3.3、数据卷的使用

docker run -it -v/宿主机绝对路径目录:/容器内目录镜像名

docker run -it -v /myDataVolume:/dataVolumeContriner centos:centos7.8.2003 / bin/bash

docker inspect 容器ID,查看容器内部细节,可看到这两个目录绑定成功

3.4、docker-compose管理工具
可避免手动编写一堆 docker run 命令,用一个配置文件来定义整个应用的服务。

3.4.1、安装

1.用 pip 安装

sudo pip install docker-compose

2.linux上进行命令下载安装

sudo curl -L "https://github.com/docker/compose/releases/download/{version}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose

授权 Docker Compose 二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

验证 Docker Compose 是否正确安装:

docker-compose –version
3.4.2、使用
1.编写 Docker Compose 文件
version: ‘3’

services:
web:
build: .
ports:
– "5000:5000"
volumes:
– .:/code
depends_on:
– redis
redis:
image: "redis:alpine"

使用命令

启动应用

docker-compose up

后台运行,则可以加上 -d 参数:

docker-compose up -d

查看 Docker Compose 应用的状态

docker-compose ps

停止应用

docker-compose down

查看配置命令

docker compose config# 构建并后台启动

docker compose up -d# 将会停止UP命令启动的容器,并删除容器

docker compose down #重新启动nginx容器

docker compose restart # 启动已存在的容器命令

docker compose start# 停止正在运行的容器命令

docker compose stop#暂停容器

docker compose pause # 恢复容器

docker compose unpause# 构建镜像

docker compose bulid# 下载镜像

docker compose pull# 删除容器

docker compose rm # 查看运行的镜像

docker compose ps# 查看进程

docker compose top# 查看服务日志输出

docker compose logs

————————————————
版权声明:本文为CSDN博主「Jun South」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42679286/article/details/132859778

   
分类:Java/OOP 作者:开发喵 发表于:2023-09-18 15:45:08 阅读量:97
<<   >>


powered by kaifamiao