首页
斐讯设备
疯言疯语
系统运维
编程语言
网站建设
友情连接
推荐
autojs
Search
1
charles破解注册码(含windows和mac)最新安装教程「亲测有效」
40 阅读
2
【omv5安装教程二】N1盒子Armbian系统下,一条命令搞定Openmediavault(OMV5)安装
18 阅读
3
告别破解!用Aspose.Words实现Java版Word转PDF的实战指南
14 阅读
4
【N1安装飞牛优化四】关闭不必要服务优化记录
13 阅读
5
【N1和Armbian】一、N1刷Linux系统armbian
12 阅读
登录
Search
标签搜索
JAVA
JAVA学习系列
docker
Linux
js
N1
git
模块二
端口
模块一
模块五
模块九
数据库
模块四
镜像
模块三
模块六
MySQL
百度网盘
nginx
DaiMaFengZi
累计撰写
588
篇文章
累计收到
9
条评论
首页
栏目
斐讯设备
疯言疯语
系统运维
编程语言
网站建设
页面
友情连接
推荐
autojs
搜索到
588
篇与
的结果
2023-11-21
【openvpn系列二】解决OpenVPN客户端所有网络全走V*P*N的问题
问题的根源VPN客户端每次连接,都会从服务器拉取一些特定配置,这些配置是在服务器端配置文件中 push 指令指定的。例如默认的配置文件 /etc/openvpn/server.conf:port 1194 proto tcp dev tun user nobody group nobody persist-key persist-tun keepalive 10 120 topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "dhcp-option DNS 202.98.198.167" push "dhcp-option DNS 202.98.192.67" push "redirect-gateway def1 bypass-dhcp" dh none ecdh-curve prime256v1 tls-crypt tls-crypt.key crl-verify crl.pem ca ca.crt cert server_JBGqk83QfIA9DMUA.crt key server_JBGqk83QfIA9DMUA.key auth SHA256 cipher AES-128-GCM ncp-ciphers AES-128-GCM tls-server tls-version-min 1.2 tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 client-config-dir /etc/openvpn/ccd status /var/log/openvpn/status.log verb 3如上面,会将这三条配置推到客户端,也就是客户端连接后拉取的配置:push "dhcp-option DNS 202.98.198.167" push "dhcp-option DNS 202.98.192.67" push "redirect-gateway def1 bypass-dhcp"重点是第三条,会让客户端所有网络流量重定向到VPN,也就是全走VPN隧道,这怎么可以?服务器本来带宽就不咋地,这么一整,一些看片的人岂不是把服务器挤爆了。必须要治~~~解决办法第一种办法就是在客户端下药在客户端配置文件中加入如下配置:第一种办法就是在客户端下药 在客户端配置文件中加入如下配置:第一条命令就是禁止从服务器拉取配置(你不是本事大么,每次连接都从服务器拉取配置,我给你禁掉,看你咋整),第二条命令就是指定一条路由规则,代表192.168网段的所有流量走VPN隧道,其他流量走正常的网络渠道,达到目的。[blockquote2 name='洛维花']这里普及一下,vpn_gateway 表示默认访问网络不走vpn隧道,指定了该参数的路由才会自动进入VPN隧道。与之相对应的是 net_gateway,表示默认所有流量都走VPN隧道,指定了该参数的路由才会走正常的网络渠道。同时,默认只允许添加100条路由,可以通过 max-routes 2000 指令指定更大的(这里2000)路由数。[/tip]第二种办法就是在服务端下药你服务端不是每次都推路由配置嘛,那就把服务端配置文件中推的内容改掉,直接治本。将上面提到的 push 配置注释掉,自己添加:;这个分号就表示注释 ;push "dhcp-option DNS 202.98.198.167" ;push "dhcp-option DNS 202.98.192.67" ;push "redirect-gateway def1 bypass-dhcp" push "route 192.168.1.0 255.255.255.0 vpn_gateway"给客户端推一条路由配置不就问题解决了,当然这里你也可以推送多条。[blockquote2 name='洛维花']这里我建议使用第二种做法,只修改一次,客户端配置不用动,当然具体问题具体分析,根据自己的实际情况权衡利弊。[/tip]可能遇到的问题修改完服务端的配置就需要重启服务,你可能不知道服务名叫啥。其实它叫:openvpn@server,是不是感觉有点怪?不按套路出牌。实则这是个动态service,挺牛逼,感兴趣的可以去了解一下。当你发现 systemctl status openvpn@server 服务时挂掉的状态时,其实此刻openvpn的进程还在跑着,这时候,你就要杀掉它:pkill openvpn,然后再 systemctl restart openvpn@server,这样服务就被重启了,同时配置文件也会加载为最新的。服务端和客户端配置文件详解文章最后附上配置文件的配置项解读。服务端配置################################################# # 多客户端服务器的OpenVPN 2.0配置文件示例 # # # # 本文件用于多客户端<->单服务器端的 # # OpenVPN服务器端配置 # # # # OpenVPN也支持单机<->单机的配置 # # (在网站上的示例页面更多信息) # # # # 这个配置可以在Windows或Linux/BSD系统上工作。 # # Windows的路径名需要加双引号并使用双反斜杠,如: # # "C:\\Program Files\\OpenVPN\\config\\foo.key" # # # # 前面加'#'或';'的是注释 # ################################################# # OpenVPN应该监听哪个本地IP地址(可选) # 如果不设置,默认监听所有IP ;local a.b.c.d # OpenVPN应该监听哪个端口(TCP/UDP) # 如果想在同一台计算机上运行多个OpenVPN实例,可以使用不同的端口号来区分它们 # 在防火墙上打开这个端口 port 1194 # 服务器使用TCP还是UDP协议 ;proto tcp proto udp # 指定OpenVPN创建的通信隧道类型 # "dev tun"将会创建一个路由IP隧道 # "dev tap"将会创建一个以太网隧道 # 如果是以太网桥接模式,并且提前创建了一个名为"tap0"的与以太网接口进行桥接的虚拟接口,则你可以使用"dev tap0" # 如果想控制VPN的访问策略,必须为TUN/TAP接口创建防火墙规则 # 在非Windows系统中,可以给出明确的单位编号,如"tun0" # 在Windows中,也可以使用"dev-node" # 在大多数系统上,除非部分或完全禁用了TUN/TAP接口的防火墙,否则VPN将不起作用。 ;dev tap dev tun # 如果想配置多个隧道,需要用到网络连接面板中TAP-Win32适配器的名称(如"MyTap") # 在XP SP2或更高版本的系统中,可能需要有选择地禁用掉针对TAP适配器的防火墙 # 通常情况下,非Windows系统则不需要该指令。 ;dev-node MyTap # 设置SSL/TLS根证书(ca)、证书(cert)和私钥(key)。 # 每个客户端和服务器端都需要它们各自的证书和私钥文件。 # 服务器端和所有的客户端都将使用相同的CA证书文件。 # # 通过easy-rsa目录下的一系列脚本可以生成所需的证书和私钥。 # 服务器端和每个客户端的证书必须使用唯一的Common Name。 # # 也可以使用遵循X509标准的任何密钥管理系统来生成证书和私钥。 # OpenVPN也支持使用一个PKCS #12格式的密钥文件(详情查看站点手册页面的"pkcs12"指令) ca ca.crt cert server.crt key server.key # 该文件应该保密 # 迪菲·赫尔曼参数 # 使用如下命令生成: # openssl dhparam -out dh2048.pem 2048 dh dh2048.pem # 网络拓扑结构 # 应该为子网(通过IP寻址) # 除非必须支持Windows客户端v2.0.9及更低版本(net30即每个客户端/30) # 默认为"net30"(不建议) ;topology subnet # 设置服务器端模式,并提供一个VPN子网,以从中为客户端分配IP地址 # 本例中服务器端自身占用10.8.0.1,其他的将分配给客户端使用 # 每个客户端将能够通过10.8.0.1访问服务器 # 如果使用的是以太网桥接模式,注释掉本行。更多信息请查看官方手册页面。 server 10.8.0.0 255.255.255.0 # 在此文件中维护客户端与虚拟IP地址之间的关联记录 # 如果OpenVPN重启,重新连接的客户端可以被分配到先前分配的虚拟IP地址 ifconfig-pool-persist ipp.txt # 该指令仅针对以太网桥接模式 # 首先,必须使用操作系统的桥接能力将以太网网卡接口和TAP接口进行桥接 # 然后,需要手动设置桥接接口的IP地址、子网掩码,这里假设为10.8.0.4和255.255.255.0 # 最后,必须指定子网的一个IP范围(例如从10.8.0.50开始,到10.8.0.100结束),以便于分配给连接的客户端 # 如果不是以太网桥接模式,直接注释掉这行指令即可 ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 # 该指令仅针对使用DHCP代理的以太网桥接模式 # 此时客户端将请求服务器端的DHCP服务器,从而获得分配给它的IP地址和DNS服务器地址 # 在此之前,也需要先将以太网网卡接口和TAP接口进行桥接 # 注意:该指令仅用于OpenVPN客户端(如Windows),并且该客户端的TAP适配器需要绑定到一个DHCP客户端上 ;server-bridge # 推送路由信息到客户端,以允许客户端能够连接到服务器后的其他私有子网 # 即允许客户端访问VPN服务器可访问的其他局域网 # 记住,这些私有子网还需要将OpenVPN客户端地址池(10.8.0.0/255.255.255.0)路由回到OpenVPN服务器 ;push "route 192.168.10.0 255.255.255.0" ;push "route 192.168.20.0 255.255.255.0" # 要为指定的客户端分配特定的IP地址,或者客户端后的私有子网也要访问VPN # 可以针对该客户端的配置文件使用ccd子目录 # 请参阅手册页获取更多信息 # 示例1:假设有个Common Name为"Thelonious"的客户端后有一个小型子网也要连接到VPN # 该子网为192.168.40.128/255.255.255.248 # 首先,去掉下面两行指令的注释: ;client-config-dir ccd ;route 192.168.40.128 255.255.255.248 # 然后创建一个文件ccd/Thelonious,该文件的内容为(没有"#"): # iroute 192.168.40.128 255.255.255.248 # 客户端所在的子网就可以访问VPN了 # 注意,这个指令只能在基于路由模式而不是基于桥接模式下才能生效 # 比如,你使用了"dev tun"和"server"指令 # 示例1:假设要给Thelonious分配一个固定的IP地址10.9.0.1 # 首先,去掉下面两行指令的注释: ;client-config-dir ccd ;route 10.9.0.0 255.255.255.252 # 然后在文件ccd/Thelonious中添加如下指令(没有"#"): # ifconfig-push 10.9.0.1 10.9.0.2 # 如果想要为不同群组的客户端启用不同的防火墙访问策略,你可以使用如下两种方法: # (1)运行多个OpenVPN守护进程,每个进程对应一个群组,并为每个进程(群组)启用适当的防火墙规则 # (2)(进阶)创建一个脚本来动态地修改响应于来自不同客户的防火墙规则 # 关于learn-address脚本的更多信息请参考官方手册页面 ;learn-address ./script # 如果启用该行指令,所有客户端的默认网关都将重定向到VPN # 这将导致诸如web浏览器、DNS查询等所有客户端流量都经过VPN # (为确保能正常工作,OpenVPN服务器所在计算机可能需要在TUN/TAP接口与以太网之间使用NAT或桥接技术进行连接) ;push "redirect-gateway def1 bypass-dhcp" # 某些具体的Windows网络设置可以被推送到客户端,例如DNS或WINS服务器地址 # 下列地址来自opendns.com提供的Public DNS服务器 ;push "dhcp-option DNS 208.67.222.222" ;push "dhcp-option DNS 208.67.220.220" # 去掉该行指令的注释将允许不同的客户端之间互相访问 # 默认情况,客户端只能访问服务器 # 为了确保客户端只能看见服务器,还可以在服务器端的TUN/TAP接口上设置适当的防火墙规则 ;client-to-client # 如果多个客户端可能使用相同的证书/私钥文件或Common Name进行连接,那么可以取消该指令的注释 # 建议该指令仅用于测试目的。对于生产环境使用而言,每个客户端都应该拥有自己的证书和私钥 # 如果没有为每个客户端分别生成Common Name唯一的证书/私钥,可以取消该行的注释(不推荐这样做) ;duplicate-cn # keepalive指令将导致类似于ping命令的消息被来回发送,以便于服务器端和客户端知道对方何时被关闭 # 每10秒钟ping一次,如果120秒内都没有收到对方的回复,则表示远程连接已经关闭 keepalive 10 120 # 出于SSL/TLS之外更多的安全考虑,创建一个"HMAC 防火墙"可以帮助抵御DoS攻击和UDP端口淹没攻击 # 可以使用以下命令来生成: # openvpn --genkey --secret ta.key # # 服务器和每个客户端都需要拥有该密钥的一个拷贝 # 第二个参数在服务器端应该为'0',在客户端应该为'1' tls-auth ta.key 0 # 该文件应该保密 # 选择一个密码加密算法,该配置项也必须复制到每个客户端配置文件中 # 注意,v2.4客户端/服务器将自动以TLS模式协商AES-256-GCM,请参阅手册中的ncp-cipher选项 cipher AES-256-CBC # 在VPN链接上启用压缩并将选项推送到客户端(仅适用于v2.4 +,对于早期版本,请参阅下文) ;compress lz4-v2 ;push "compress lz4-v2" # 对于与旧客户端兼容的压缩,使用comp-lzo # 如果在此启用,还必须在客户端配置文件中启用它 ;comp-lzo # 允许并发连接的客户端的最大数量 ;max-clients 100 # 初始化后减少OpenVPN守护进程的权限是一个好主意 # 该指令仅限于非Windows系统中使用 ;user nobody ;group nobody # 持久化选项可以尽量避免访问那些在重启之后由于用户权限降低而无法访问的某些资源 persist-key persist-tun # 输出一个简短的状态文件,用于显示当前的连接状态,该文件每分钟都会清空并重写一次 status openvpn-status.log # 默认情况下,日志消息将写入syslog(在Windows系统中,如果以服务方式运行,日志消息将写入OpenVPN安装目录的log文件夹中) # 可以使用log或者log-append来改变这种默认设置 # "log"方式在每次启动时都会清空之前的日志文件 # "log-append"是在之前的日志内容后进行追加 # 你可以使用两种方式之一(不要同时使用) ;log openvpn.log ;log-append openvpn.log # 为日志文件设置适当的冗余级别(0~9) # 冗余级别越高,输出的信息越详细 # # 0 表示静默运行,只记录致命错误 # 4 表示合理的常规用法 # 5和6 可以帮助调试连接错误 # 9 表示极度冗余,输出非常详细的日志信息 verb 3 # 忽略过多的重复信息 # 相同类别的信息只有前20条会输出到日志文件中 ;mute 20 # 通知客户端,当服务器重新启动时,可以自动重新连接 # 只能是UDP协议使用,TCP使用的话不能启动服务 explicit-exit-notify 1 # (如果不添加该指令则)默认值3600,也就是一个小时进行一次TSL重新协商 # 这个参数在服务端和客户端设置都有效 # 如果两边都设置了,就按照时间短的设定优先 # 当两边同时设置成0,表示禁用TSL重协商。使用OTP认证需要禁用 reneg-sec 0客户端配置############################################## # 多客户端的OpenVPN 2.0的客户端配置文件示例 # # # # 该配置文件可以被多个客户端使用 # # 不过每个客户端都应该有自己的证书和密钥文件 # # # # 在Windows上此配置文件的后缀应该是".ovpn" # # 在Linux/BSD系统中后缀是".conf" # ############################################## # 指定这是一个客户端,这将从服务器获取某些配置文件指令 client # 使用与服务器上相同的设置 # 在大多数系统中,除非部分禁用或者完全禁用了TUN/TAP接口的防火墙,否则VPN将不起作用 ;dev tap dev tun # 在Windows系统中,如果想配置多个隧道,则需要该指令 # 需要用到网络连接面板中TAP-Win32适配器的名称(例如"MyTap") # 在XP SP2或更高版本的系统中,可能需要禁用掉针对TAP适配器的防火墙 ;dev-node MyTap # 指定连接的服务器是采用TCP还是UDP协议 # 使用与服务器上相同的设置 ;proto tcp proto udp # 指定服务器的主机名(或IP)以及端口号 # 如果有多个VPN服务器,为了实现负载均衡,可以设置多个remote指令 remote my-server-1 1194 ;remote my-server-2 1194 # 如果指定了多个remote指令,启用该指令将随机连接其中的一台服务器 # 否则,客户端将按照指定的先后顺序依次尝试连接服务器 ;remote-random # 启用该指令,与服务器连接中断后将自动重新连接, # 这在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用 resolv-retry infinite # 大多数客户端不需要绑定本机特定的端口号 nobind # 在初始化完毕后,降低OpenVPN的权限(该指令仅限于非Windows系统中使用) ;user nobody ;group nobody # 持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源 persist-key persist-tun # 如果通过HTTP代理方式来连接到实际的VPN服务器 # 在此处指定代理服务器的主机名(或IP)和端口号 # 如果代理服务器需要身份认证,请参考官方手册 ;http-proxy-retry # 连接失败时自动重试 ;http-proxy [proxy server] [proxy port #] # 无线网络通常会产生大量的重复数据包 # 设置此标识将忽略掉重复数据包的警告信息 ;mute-replay-warnings # SSL/TLS参数配置 # 更多描述信息请参考服务器端配置文件 # 最好为每个客户端单独分配.crt/.key文件对 # 单个CA证书可以供所有客户端使用 ca ca.crt cert client.crt key client.key # 通过检查证书具有正确的密钥使用设置来验证服务器证书 # 这是防止此处讨论的潜在攻击的重要预防措施: # http://openvpn.net/howto.html#mitm # # 要使用此功能,EasyRSA生成服务器证书的时候进行相关设置 remote-cert-tls server # 如果在服务器上使用tls-auth密钥,那么每个客户端也必须拥有密钥 tls-auth ta.key 1 # 选择一个加密算法,服务器使用的算法选项,也必须在这里指定它 # 注意,v2.4客户端/服务器将自动以TLS模式协商AES-256-GCM。 # 另请参阅手册中的ncp-cipher选项 cipher AES-256-CBC # 在VPN连接中启用压缩 # 除非在服务器配置文件中启用,否则不要启用它 ;comp-lzo # 设置日志文件冗余级别(0~9) # 0 表示静默运行,只记录致命错误 # 4 表示合理的常规用法 # 5和6 可以帮助调试连接错误 # 9 表示极度冗余,输出非常详细的日志信息 verb 3 # 忽略过多的重复信息 # 相同类别的信息只有前20条会输出到日志文件中 ;mute 20 # (如果不添加该指令则)默认值3600,也就是一个小时进行一次TSL重新协商 # 这个参数在服务端和客户端设置都有效 # 如果两边都设置了,就按照时间短的设定优先 # 当两边同时设置成0,表示禁用TSL重协商。使用OTP认证需要禁用 reneg-sec 0
2023年11月21日
0 阅读
0 评论
0 点赞
2023-11-15
docker容器限制内存的方法(防止机器跑死)
docker update 容器名 --memory-swap -1 -m 1080M1080M是指1G内存,这个根据自己实际情况来定夺!查看容器各种数据占用量docker stats
2023年11月15日
6 阅读
0 评论
0 点赞
2023-11-07
【深度学习KylinOS二】【麒麟系统环境安装之Mysql】银河麒麟服务器V10 aarch64安装mysql8.0教程
服务器环境在 arm64(aarch64) 架构服务器上基于国产化操作系统安装 Mysql 服务## 查看系统版本,确认版本 cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Tercel) ## 操作系统 uname -p aarch64 ## 内核版本(≥ 3.10) uname -r 4. 19.90-21.2.ky10.aarch64 ## iptables 版本(≥ 1.4) iptables --version iptables v1.8.1 (legacy)软件安装需先卸载mariadb-server、mariadb-commonyum remove mariadb-server mariadb-common下载安装包下载地址:https://downloads.mysql.com/archives/community/可以直接用命令下载:wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-8.1.0-1.el8.aarch64.rpm-bundle.tar解压:tar xvf mysql-8.1.0-1.el8.aarch64.rpm-bundle.tar安装:yum install -y ./mysql-community-server-8.1.0-1.el8.x86_64.rpm yum install -y ./mysql-community-client-8.1.0-1.el8.x86_64.rpm yum install -y ./mysql-community-libs-8.1.0-1.el8.x86_64.rpm yum install -y ./mysql-community-server-8.1.0-1.el8.x86_64.rpm yum install -y ./mysql-community-common-8.1.0-1.el8.x86_64.rpm 如果嫌弃麻烦,那就直接全部安装 yum install -y ./mysql-community-*启动mysqldsystemctl start mysqld设置开机启动systemctl enable mysqldMySQL默认密码和修改密码grep 'temporary password' /var/log/mysqld.log mysql -uroot -p修改密码ALTER USER 'root'@'localhost' IDENTIFIED BY 'sfa33afFASD!@#';重新登录搞定收工
2023年11月07日
1 阅读
0 评论
0 点赞
2023-11-07
【深度学习KylinOS三】【麒麟系统环境安装之Nginx】安装nginx--银河麒麟V10(Kylin Linux Advanced Server release V10 (Tercel))操作系统
服务器环境在 arm64(aarch64) 架构服务器上基于国产化操作系统安装 Nginx 服务获取源代码软件获取门路:http://nginx.org/download/nginx官网:http://nginx.org/编译前期情况设置履行如下下令,装置依附包。yum install gcc gcc-c++ make unzip pcre pcre-devel zlib zlib-devel libxml2 libxml2-devel readline readline-devel ncurses ncurses-devel perl-devel perl-ExtUtils-Embed openssl-devel -y编译源代码并安装履行以下下令,获取装置包。wget -c http://nginx.org/download/nginx-1.16.1.tar.gz履行以下下令,解压装置包。tar -zxvf nginx-1.16.1.tar.gz履行以下下令,进入装置目次。cd nginx-1.16.1履行以下下令,编译装置nginx。./configure make -j4 && make install测试已实现编译的软件新增nginx用户useradd nginx履行以下下令,给nginx用户开启nginx装置目次权限。chown nginx:nginx /usr/local/nginx履行如下下令,检查nginx版本。cd /usr/local/nginx/sbin/ ./nginx -v启动nginxcd /usr/local/nginx/sbin/ ./nginx检查能否启动胜利ps -ef | grep nginx设置nginx开机自启动进入到/lib/systemd/system/目次cd /lib/systemd/system/创立nginx.service文件,并编纂# vim nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx -c conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target参加开机自启动systemctl enable nginx #假如不想开机自启动了,能够应用上面的下令撤消开机自启动 systemctl disable nginx效劳的启动/结束/革新设置文件/检查状况#systemctl start nginx.service 启动nginx效劳 # systemctl stop nginx.service 结束效劳 # systemctl restart nginx.service 从新启动效劳 # systemctl list-units --type=service 检查全部已启动的效劳 # systemctl status nginx.service 检查效劳以后状况 # systemctl enable nginx.service 设置开机自启动 # systemctl disable nginx.service 结束开机自启动一个罕见的过错Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.直接依照提醒履行下令systemctl daemon-reload 即可。systemctl daemon-reload
2023年11月07日
0 阅读
0 评论
0 点赞
2023-11-06
【深度学习KylinOS一】【麒麟系统环境安装之Docker】麒麟系统V10 怎么使用自带的docker 麒麟系统安装docker
服务器环境在 arm64(aarch64) 架构服务器上基于国产化操作系统安装 docker 服务## 查看系统版本,确认版本 cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Tercel) ## 操作系统 uname -p aarch64 ## 内核版本(≥ 3.10) uname -r 4. 19.90-21.2.ky10.aarch64 ## iptables 版本(≥ 1.4) iptables --version iptables v1.8.1 (legacy)吐槽所谓的国产操作系统在我看来即换皮改名操作系统,不可否认他们在权限审计方面做的比原版开源的操作系统更复杂更细腻(但是这些应该都可以自己通过 PAM 之类的配置吧)。由于工作原因需要接触当前主流的大部分 GNU/Linux、*BSD、国产操作系统,在目前已接触的多款所谓的基于 Debian 或 Fedora 二次开发的操作系统中感触最深的不是他们上面加的各种权限审计限制,而是他们改了包名导致在安装 deb 或者 rpm 包时出现各种依赖问题。例如 CentOS7 的 rpm 包标识为 el7 麒麟上面则改成了 ky10,在安装一些软件时由于依赖问题导致同名包安装不上,如果卸载系统上已有包可能会出现系统某些软件服务出现问题,如果不卸载则只能带上痛苦面具去解决冲突。真就自主研发靠改名了。国产的各种麒麟操作系统由于使用者多为政府单位,运行环境又是隔离内网,导致一般情况下只有安装光盘没有完整的软件源寻找软件源据说银河麒麟基于 CentOS7,但是通过测试最终添加 CentOS8 的源才可以用,因为他喵的 CentOS7 只有 x86_64,而 CentOS8 才有 aarch64,厂商的话都信不得哦。手动配置了 CentOS8 的源后,yum makecache 可以正常缓存,但是 yum -y update 会出现多个依赖错误问题,通过 yum -y install package-name 可以安装软件,但是依赖问题依然很难受。最终在配置好 CentOS8 与 Docker-ce 官方源后由于依赖问题放弃了通过 yum 在线安装,直接下载如下 rpm 包安装依然不行。通过二进制安装 docker通过在线软件源和 rpm 包不能直接安装,那么只能选择通过编译安装了,去官网找了下发现提供有编译好的 docker 二进制包,直接下载二进制包安装吧,感谢 golang 的跨平台性。安装条件64位的操作系统# uname -p aarch64Linux 内核版本 ≥ 3.10# uname -r 4. 19.90-17.ky10.aarch64iptables 版本 ≥ 1.4# iptables --version iptables v1.8.1 (legacy)一个 ps 可执行文件,通常由 procps 或类似的包提供。安装 Docker选择并下载 docker-ce 二进制包文件官网下载地址: Index of linux/static/stable/aarch64/wget https://download.docker.com/linux/static/stable/aarch64/docker-20.10.7.tgz解压下载好的压缩包tar -zxvf docker-20.10.7.tgz移动解压出来的二进制文件到 /usr/bin 目录中mv docker/* /usr/bin/测试启动dockerd添加 systemd添加 docker 的 systemd 服务脚本至 /usr/lib/systemd/system/脚本参考自 https://github.com/docker/docker-cevim /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target docker.socket firewalld.service containerd.service Wants=network-online.target Requires=docker.socket containerd.service [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutStartSec=0 RestartSec=2 Restart=always # Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229. # Both the old, and new location are accepted by systemd 229 and up, so using the old location # to make them work for either version of systemd. StartLimitBurst=3 # Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230. # Both the old, and new name are accepted by systemd 230 and up, so using the old name to make # this option work for either version of systemd. StartLimitInterval=60s # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Comment TasksMax if your systemd version does not support it. # Only systemd 226 and above support this option. TasksMax=infinity # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process OOMScoreAdjust=-500 [Install] WantedBy=multi-user.target根据 docker.service 中 Unit.After 需求添加 docker.socket 脚本至 /usr/lib/systemd/system/脚本参考自 https://github.com/docker/docker-cevim /usr/lib/systemd/system/docker.socket [Unit] Description=Docker Socket for the API [Socket] # If /var/run is not implemented as a symlink to /run, you may need to # specify ListenStream=/var/run/docker.sock instead. ListenStream=/run/docker.sock SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target注意:如果缺少该文件,启动 docker 时会报如下错误:# systemctl start docker Failed to start docker.service: Unit docker.socket not found.根据 docker.service 中 Unit.After 需求添加 containerd.service 脚本至 /usr/lib/systemd/system/vim /usr/lib/systemd/system/containerd.service # Copyright The containerd Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. [Unit] Description=containerd container runtime Documentation=https://containerd.io After=network.target local-fs.target [Service] ExecStartPre=-/sbin/modprobe overlay ExecStart=/usr/bin/containerd Type=notify Delegate=yes KillMode=process Restart=always RestartSec=5 # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNPROC=infinity LimitCORE=infinity LimitNOFILE=infinity # Comment TasksMax if your systemd version does not supports it. # Only systemd 226 and above support this version. TasksMax=infinity OOMScoreAdjust=-999 [Install] WantedBy=multi-user.target注意:如果缺少该文件,启动 docker 时会报如下错误:# systemctl restart docker Failed to restart docker.service: Unit containerd.service not found.重载 systemd 配置文件systemctl daemon-reload创建 docker 组groupadd docker如不创建 docker 组在通过 systemctl 启动时会报错如下Dependency failed for Docker Application Container Engine. Job docker.service/start failed with result 'dependency'.启动 docker 服务systemctl start docker systemctl enable docker修改 docker 配置文件并查看安装好的 docker 基本信息在 /etc/docker/daemon.json 中添加如下内容:vim /etc/docker/daemon.json vim /etc/docker/daemon.json { "data-root":"/data/docker", "exec-opts":[ "native.cgroupdriver=systemd" ] }重启 docker 服务systemctl restart docker查看 docker info常用操作命令1.查看系统版本,确认版本 # cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Tercel) 2. 查看系统架构(服务器如果是鲲鹏,架构是aarch64) # uname -p aarch64 3. 内核版本 # uname -r 4. 19.90-23.8.v2101.ky10.aarch64 4. iptables版本 # iptables --version iptables v1.8.1 (legacy) 5. 启动docker systemctl start docker systemctl enable docker 6. 获取操作系统的版本详细信息 lsb_release -a(第一种) cat /etc/os-release (第二种) 7. 查看系统是64位还是32位 第一种方式:getconf LONG_BIT 第二种方式:file /bin/ls 第三种方式:lsb_release -a 8. 查看linux版本 第一种方式使用这个命令查看 lsb_release -a 第二种方式使用这个命令查看cat /etc/issue(仅适用于linux) 第三种方式使用这个命令查看 执行cat /etc/redhat-release 9. 查看CPU配置信息 cat /proc/cpuinfo lscpu 10. 查看内存配置信息 cat /proc/meminfo 11. 查看硬盘信息 df -h 12. 查看当前linux的版本 cat /etc/redhat-release rpm -q centos-release 13. 修改DNS配置 vim /etc/resolv.conf 14. 查看外网IP curl cip.cc curl ifconfig.me curl ipinfo.io 15. 获取操作系统分支号 hostnamectl
2023年11月06日
1 阅读
0 评论
0 点赞
2023-10-26
LINUX 防火墙开放端口,查看状态,查看开放端口
1.查看防火墙状态:active (running) 即是开启状态systemctl status firewalld查看已开发端口命令:firewall-cmd --list-all新增防火墙开放端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent开放端口后需要重新加载防火墙:firewall-cmd --reloadfirewalld的基本使用命令:启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 : systemctl enable firewalld配置firewalld-cmd命令查看版本: firewall-cmd --version 查看帮助: firewall-cmd --help 显示状态: firewall-cmd --state 查看所有打开的端口: firewall-cmd --zone=public --list-ports 更新防火墙规则: firewall-cmd --reload 查看区域信息: firewall-cmd --get-active-zones 查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 拒绝所有包:firewall-cmd --panic-on 取消拒绝状态: firewall-cmd --panic-off 查看是否拒绝: firewall-cmd --query-panicsystemctl相关命令启动一个服务:systemctl start firewalld.service 关闭一个服务:systemctl stop firewalld.service 重启一个服务:systemctl restart firewalld.service 显示一个服务的状态:systemctl status firewalld.service 在开机时启用一个服务:systemctl enable firewalld.service 在开机时禁用一个服务:systemctl disable firewalld.service 查看服务是否开机启动:systemctl is-enabled firewalld.service 查看已启动的服务列表:systemctl list-unit-files|grep enabled 查看启动失败的服务列表:systemctl --failed
2023年10月26日
0 阅读
0 评论
0 点赞
2023-10-24
【环境安装记录Mysql卸载篇】Linux系统下Mysql卸载
前言在这之前先把Mysql卸载,记录一下卸载步骤。1.停止mysql服务systemctl stop mysqld2.查看mysql的rpm软件包rpm -qa |grep -i mysql3.删除这些查询到的软件包yum remove mysql-community-libs.x86_64先删libs,再删除剩下的两个。4.删除与mysql相关的linux本地文件先查找到这些文件find / -name mysql再删除对应文件rm -rf xxx #找到的文件目录5.最后删除mysql配置文件rm -rf /etc/my.cnf
2023年10月24日
1 阅读
0 评论
0 点赞
2023-10-24
【环境安装记录指定Mysql版本篇】CentOS7 离线安装mysql8数据库
第一步:下载离线安装包下载地址:https://dev.mysql.com/downloads/第二步:上传下载包到服务器上传文件mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar到服务器上。第三步:解压文件包切换到上传文件目录下运行如下命令:[root@gelong-vm1 rpms]# tar -vxf mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar mysql-community-libs-8.0.18-1.el7.x86_64.rpm mysql-community-devel-8.0.18-1.el7.x86_64.rpm mysql-community-embedded-compat-8.0.18-1.el7.x86_64.rpm mysql-community-libs-compat-8.0.18-1.el7.x86_64.rpm mysql-community-common-8.0.18-1.el7.x86_64.rpm mysql-community-test-8.0.18-1.el7.x86_64.rpm mysql-community-server-8.0.18-1.el7.x86_64.rpm mysql-community-client-8.0.18-1.el7.x86_64.rpm 第四步:卸载系统自带的数据库1.检查系统自带的 MariaDB检查系统是否自带MariaDB,命令如下:rpm -qa | grep mariadb如果系统自带MariaDB,删除掉,删除命令如下:rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_642.检查系统自带的mysql数据库安装包检查系统是否自带Mysql数据库,名利如下:rpm -qa | grep mysql如果系统自带mysql数据库,删除掉,删除命令如下:rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64第五步:按照顺序安装mysql数据库按照如下顺序安装:rpm -ivh mysql-community-common-8.0.18-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.18-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.18-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.18-1.el7.x86_64.rpm rpm -ivh mysql-community-devel-8.0.18-1.el7.x86_64.rpm1.安装mysql-community-server-8.0.18-1.el7.x86_64.rpm 报错解决方案安装 mysql-community-server-8.0.18-1.el7.x86_64.rpm 的时候需要依赖 net-tools,如果没有 net-tools 会安装失败,此时先安装 net-tools,然后再安装 mysql-community-server-8.0.18-1.el7.x86_64.rpm 即可,安装命令如下:# 安装 mysql-community-server-8.0.25-1.el7.x86_64.rpm 依赖报错 [root@sangni mysql-installation]# rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm 警告:mysql-community-server-8.0.25-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY 错误:依赖检测失败: net-tools 被 mysql-community-server-8.0.25-1.el7.x86_64 需要 # 安装 net-tools [root@sangni mysql-installation]# yum install net-tools 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.njupt.edu.cn * extras: mirrors.njupt.edu.cn * updates: mirrors.njupt.edu.cn 正在解决依赖关系 --> 正在检查事务 ---> 软件包 net-tools.x86_64.0.2.0-0.25.20131004git.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 ================================================================================================================================== Package 架构 版本 源 大小 ================================================================================================================================== 正在安装: net-tools x86_64 2.0-0.25.20131004git.el7 base 306 k 事务概要 ================================================================================================================================== 安装 1 软件包 总下载量:306 k 安装大小:917 k Is this ok [y/d/N]: y Downloading packages: net-tools-2.0-0.25.20131004git.el7.x86_64.rpm | 306 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction 警告:RPM 数据库已被非 yum 程序修改。 ** 发现 2 个已存在的 RPM 数据库问题, 'yum check' 输出如下: 2:postfix-2.10.1-9.el7.x86_64 有缺少的需求 libmysqlclient.so.18()(64bit) 2:postfix-2.10.1-9.el7.x86_64 有缺少的需求 libmysqlclient.so.18(libmysqlclient_18)(64bit) 正在安装 : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1 验证中 : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1 已安装: net-tools.x86_64 0:2.0-0.25.20131004git.el7 完毕! # net-tools 安装完成后再次安装 mysql-community-server-8.0.25-1.el7.x86_64.rpm [root@sangni mysql-installation]# rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm 警告:mysql-community-server-8.0.25-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-server-8.0.25-1.e################################# [100%]2.安装 rpm -ivh mysql-community-devel-8.0.18-1.el7.x86_64.rpm 报错解决方案[root@192 mysql]# rpm -ivh mysql-community-devel-8.0.18-1.el7.x86_64.rpm warning: mysql-community-devel-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies: pkgconfig(openssl) is needed by mysql-community-devel-8.0.25-1.el7.x86_64解决办法yum install openssl-devel特别说明:关于mysql8之后的大小写问题在MySQL8中,数据目录初始化之后,不再允许更改lower_case_table_names=1的值;也就是说启动(重启)MYSQL时,lower_case_table_names的值必须于,初始化MYSOL时(安装 MYSOL后的首次启动)的值相同。由于我的业务是有需求的,所以我先设置关闭大小写验证 #进入目录 cd /etc/ #编辑my.cnf文件 vi /etc/my.cnf #添加内容 lower_case_table_names=1通常,0 表示大小写敏感,1 表示大小写不敏感。相关文章:CentOS 上查看 MySQL 的大小写敏感状态centos 安装MySQL 8.0 区分大小写解决方法第六步:启动mysql服务1.启动MYSQL服务:[root@gelong-vm1 rpms]# service mysqld start Redirecting to /bin/systemctl start mysqld.service2.查看启动状态:[root@gelong-vm1 rpms]# systemctl status mysqld.service ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since 二 2023-09-05 14:19:46 CST; 38s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 15236 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 15315 (mysqld) Status: "Server is operational" CGroup: /system.slice/mysqld.service └─15315 /usr/sbin/mysqld 9月 05 14:19:34 gelong-vm1 systemd[1]: Starting MySQL Server... 9月 05 14:19:46 gelong-vm1 systemd[1]: Started MySQL Server.第七步:修改默认密码开启远程连接1.查看默认密码:查看默认密码命令如下[root@gelong-vm1 rpms]# grep 'temporary password' /var/log/mysqld.log 2023-09-05T06:19:39.121134Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iU/%Q(3w<AO*2.使用默认密码登录mysql:[root@gelong-vm1 rpms]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.23 Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.3.修改 root 用户密码:注意:这里修改的密码要足够复杂,包含大小和特殊符号;mysql> alter user 'root'@'localhost' identified by 'Houpu123!@#'; Query OK, 0 rows affected (0.62 sec) mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.23 | +-----------+ 1 row in set (0.00 sec)4.修改 root 用户的 host 列值,开启远程连接:修改运行远程连接命令如下:mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select host from user; +-----------+ | host | +-----------+ | % | | localhost | | localhost | | localhost | +-----------+ 4 rows in set (0.00 sec)5.刷新缓存:重新刷新mysql的缓存内容命令:mysql> flush privileges; Query OK, 0 rows affected (0.47 sec) 6.给 root 用户授予所有权限:mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; Query OK, 0 rows affected (0.02 sec) 解决远程连接时报错2059-Authentication plugin ‘caching_sha2_password‘安装的时候,选择了强加密规则caching_sha2_password,与之前的mysql的mysql_native_password规则不同,navicate驱动目前不支持新加密规则通过更改加密规则和刷新权限的方式 use mysql; #选择数据库 # 远程连接请将'%'换成'localhost' ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更改加密方式 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户密码 FLUSH PRIVILEGES; #刷新权限8.退出mysql控制台:exit;
2023年10月24日
0 阅读
0 评论
0 点赞
1
...
46
47
48
...
74