更新:2023-05-17 18:43
Linux放行端口一般使用iptables命令,iptables是Linux操作系统中常用的防火墙程序。它可以通过规则来过滤和转发网络数据包,实现网络安全策略。具体可以使用以下命令:
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
其中,-A表示在规则链的后面添加新规则;-p表示协议类型,本例使用tcp协议;–dport表示目标端口号;-j表示在匹配目标后要执行的动作,本例中是ACCEPT即放行,还可以选择DROP或REJECT等动作。
添加完规则后,需要保存:
service iptables save
在iptables规则链中,还有几个常用的参数:
例如,我们可以通过以下命令在规则链开头添加一个放行8080端口的规则:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
我们可以通过以下命令查看规则链中的所有规则:
iptables -L
在Linux中,可以通过以下命令查看防火墙状态:
service iptables status
如果输出结果中显示 iptables: Firewall is not running,则表示防火墙未启动。
如果需要放行某个特定IP地址和端口号,则可以使用以下命令:
iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
其中,-s表示源IP地址,可以用来限制来自特定IP的访问,如果是全网放行,则可以省略-s参数,如下:
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
如果需要关闭指定端口,则可以使用以下命令:
iptables -A INPUT -p tcp --dport 端口号 -j DROP
其中,-j参数设置成DROP即可。关闭指定端口后,再用L命令就可以看到相应的规则。
如果要放行全部端口,则可以使用以下命令:
iptables -P INPUT ACCEPT
这条命令的意思是把INPUT规则链中默认策略设置为ACCEPT,即放行全部端口。如果需要关闭全部端口,则可以使用以下命令:
iptables -P INPUT DROP
这条命令的意思是把INPUT规则链中默认策略设置为DROP,即关闭全部端口。
在Linux中,可以使用netstat命令查看当前各个端口的开放情况:
netstat -an | grep LISTEN
该命令会输出所有处于监听状态的端口信息。
根据前面的介绍,可以通过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命令可以查看当前防火墙状态。
如果需要关闭某个端口,则可以使用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放行端口一般使用iptables命令,iptables是Linux操作系统中常用的防火墙程序。它可以通过规则来过滤和转发网络数据包,实现网络安全策略。具体可以使用以下命令:
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
其中,-A表示在规则链的后面添加新规则;-p表示协议类型,本例使用tcp协议;–dport表示目标端口号;-j表示在匹配目标后要执行的动作,本例中是ACCEPT即放行,还可以选择DROP或REJECT等动作。
添加完规则后,需要保存:
service iptables save
在iptables规则链中,还有几个常用的参数:
例如,我们可以通过以下命令在规则链开头添加一个放行8080端口的规则:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
我们可以通过以下命令查看规则链中的所有规则:
iptables -L
在Linux中,可以通过以下命令查看防火墙状态:
service iptables status
如果输出结果中显示 iptables: Firewall is not running,则表示防火墙未启动。
如果需要放行某个特定IP地址和端口号,则可以使用以下命令:
iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
其中,-s表示源IP地址,可以用来限制来自特定IP的访问,如果是全网放行,则可以省略-s参数,如下:
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
如果需要关闭指定端口,则可以使用以下命令:
iptables -A INPUT -p tcp --dport 端口号 -j DROP
其中,-j参数设置成DROP即可。关闭指定端口后,再用L命令就可以看到相应的规则。
如果要放行全部端口,则可以使用以下命令:
iptables -P INPUT ACCEPT
这条命令的意思是把INPUT规则链中默认策略设置为ACCEPT,即放行全部端口。如果需要关闭全部端口,则可以使用以下命令:
iptables -P INPUT DROP
这条命令的意思是把INPUT规则链中默认策略设置为DROP,即关闭全部端口。
在Linux中,可以使用netstat命令查看当前各个端口的开放情况:
netstat -an | grep LISTEN
该命令会输出所有处于监听状态的端口信息。
根据前面的介绍,可以通过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命令可以查看当前防火墙状态。
如果需要关闭某个端口,则可以使用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
sudo sudo yum update
sudo yum -y install yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce
docker -v
2.2、Docker启动、停止
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
systemctl enable docker
docker run hello-world
docker info
docker –help
2.3、镜像操作
docker pull 镜像名称 (在hub.docker.com(官方docker镜像仓库)右侧有拉取镜像的地址)
docker images
docker image rm 镜像id
docker rmi docker images -q
docker tag 镜像id 新镜像名称:版本
2.4、容器操作
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私有仓库
docker pull registry
docker pull 私有仓库服务器ip:5000/centos:7
docker run -di –name=registry -p 5000:5000 registry
2.6、简单应用部署示例
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
docker run -di –name=mytomcat -p 9000:8080
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
Nginx部署
docker pull 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 、修改配置文件
apt-get updateapt-get install vim
docker pull mysql:8.0.19
docker images
docker run -p 3306:3306 –name mysql-master -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:8.0.19
docker run -p 3307:3306 –name mysql-slave -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:8.0.19
docker ps -a
2.改配置文件
docker exec -it 8b71301f25ed /bin/bash //8b71301f25ed为容器ID
docker exec -it mysql-master /bin/bash //mysql-master为容器名称
vim my.cnf
[mysqld]
server-id=100
log-bin=master-bin
binlog-format=ROW // 二级制日志格式,有三种 row,statement,mixed
binlog-do-db=数据库名 //同步的数据库名称,如果不配置,表示同步所有的库
docker restart mysql-master
vim my.cnf
[mysqld]
server-id=101
log-bin=mysql-slave-bin
relay_log=mysql-relay-bin
read_only=1 ## 设置为只读,该项如果不设置,表示slave可读可写
docker restart mysql-slave
3.1.2、开启Master-Slave主从复制
1.查看Master的信息
show master status
docker inspect –format='{{.NetworkSettings.IPAddress}}’ mysql-master
2.Slave 连接 Master
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 连接情况
start 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
docker push 服务器IP:端口/IMAGE_NAME
3.3、数据卷的使用
docker run -it -v /myDataVolume:/dataVolumeContriner centos:centos7.8.2003 / bin/bash
docker inspect 容器ID,查看容器内部细节,可看到这两个目录绑定成功
3.4、docker-compose管理工具
可避免手动编写一堆 docker run 命令,用一个配置文件来定义整个应用的服务。
3.4.1、安装
sudo pip install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/{version}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/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
docker-compose up -d
docker-compose ps
docker-compose down
————————————————
版权声明:本文为CSDN博主「Jun South」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42679286/article/details/132859778
powered by kaifamiao