分类: Linux运维

Linux运维笔记

  • 用于哪吒探针网络检测的各地区三网IP地址

    用于哪吒探针网络检测的各地区三网IP地址

    全国三网IP地址

    • 河北
    联通移动电信
    61.182.138.156111.62.229.10027.185.242.215
    • 山西
    联通移动电信
    60.221.18.41183.201.244.911.71.157.41
    • 辽宁
    联通移动电信
    218.61.211.13236.131.156.145123.184.58.41
    • 吉林
    联通移动电信
    122.143.8.41111.27.127.176123.172.127.217
    • 黑龙江
    联通移动电信
    113.7.211.140111.42.190.2542.101.84.132
    • 江苏
    联通移动电信
    122.96.235.16536.156.92.13258.215.210.220
    • 浙江
    联通移动电信
    101.69.194.224117.147.213.41115.220.14.91
    • 安徽
    联通移动电信
    112.132.208.41112.29.198.100223.247.108.251
    • 福建
    联通移动电信
    36.248.48.139112.50.96.88106.126.10.28
    • 江西
    联通移动电信
    116.153.69.224117.168.150.249106.227.22.132
    • 山东
    联通移动电信
    112.240.56.143120.220.145.91144.123.160.140
    • 河南
    联通移动电信
    123.6.65.101111.7.99.220171.15.110.220
    • 湖北
    联通移动电信
    122.189.226.138111.47.131.101111.170.8.60
    • 湖南
    联通移动电信
    116.162.28.220120.226.192.91113.240.117.108
    • 广东
    联通移动电信
    112.90.211.100183.240.65.191183.36.23.111
    • 海南
    联通移动电信
    153.0.226.35111.29.29.219124.225.43.220
    • 四川
    联通移动电信
    101.206.163.49183.220.151.41118.123.218.220
    • 贵州
    联通移动电信
    117.187.254.13261.243.18.22058.42.61.132
    • 云南
    联通移动电信
    14.204.150.4136.147.44.219222.221.102.220
    • 陕西
    联通移动电信
    123.139.127.132111.19.148.100124.115.14.100
    • 甘肃
    联通移动电信
    59.81.94.53117.157.16.41118.182.228.91
    • 青海
    联通移动电信
    116.177.237.137111.12.152.170223.221.216.219
    • 内蒙古
    联通移动电信
    116.114.98.41117.161.76.41110.76.186.70
    • 广西
    联通移动电信
    171.39.5.5136.136.112.41222.217.93.55
    • 西藏
    联通移动电信
    43.242.165.35117.180.234.41113.62.176.89
    • 宁夏
    联通移动电信
    116.129.226.28111.51.155.214222.75.44.220
    • 新疆
    联通移动电信
    116.178.77.4036.189.208.164110.157.243.45
    • 北京
    联通移动电信
    202.108.29.159222.35.73.1220.181.173.35
    • 天津
    联通移动电信
    116.78.119.56111.31.236.3542.81.98.35
    • 上海
    联通移动电信
    59.81.65.42183.194.219.220101.227.191.14
    • 重庆
    联通移动电信
    113.207.69.190221.178.81.101119.84.131.101

    作者:木子欢儿

    出处:https://www.cnblogs.com/HGNET/p/18321585

    版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

    部分文章来源于网络,如疏漏未标注原文地址或侵权,请联系进行删除。

  • mysql8.0下创建表语句生成utf8mb4_general_ci

    mysql8.0下创建表语句生成utf8mb4_general_ci

    将SQL语句中的CHARSET=utf8mb4 替换为 CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

    如果想设置数据库默认字符集,可以在my.cnf进行配置

    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci

  • ARM架构下安装mysql5.7

    ARM架构下安装mysql5.7

    场景:arm架构下,mysql只支持8.0 ,mysql5.7不支持,采用docker镜像模式安装

    docker pull biarms/mysql:5.7.30-linux-arm64v8 #支持arm架构的mysql 5.7镜像包

    1、拉取镜像

    docker pull biarms/mysql:5.7.30-linux-arm64v8

    2、创建mysql容器目录

    mkdir -p /data/mysql/{conf,data,logs}

    3、新建my.cnf配置文件

    [mysql]
    
    default-character-set=utf8
    
    socket=/var/lib/mysql/mysql.sock
    
    [mysqld]
    # 关闭二进制日志
    
    skip-log-bin
    
    #mysql5.7以后的不兼容问题处理
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
    datadir=/var/lib/mysql
    
    socket=/var/lib/mysql/mysql.sock
    
    symbolic-links=0
    
    max_connections=200
    
    character-set-server=utf8
    
    default-storage-engine=INNODB
    
    lower_case_table_names=1
    
    max_allowed_packet=16M
    
    default-time_zone='+8:00'
    
    [mysqld_safe]
    
    log-error=/var/log/mysql/mysql.log
    
    pid-file=/var/run/mysql/mysql.pid
    
    !includedir /etc/mysql/conf.d/
    
    !includedir /etc/mysql/mysql.conf.d/

    4、运行容器

    docker run -p 3306:3306 --name mysql5.7 \
    -v ./data/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
    -v ./data/mysql/logs:/var/log/mysql \
    -v ./data/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d biarms/mysql:5.7.30-linux-arm64v8

    5、说明

    -p 3306:3306 容器内部端口和服务器端口映射关联

    –privileged=true 设置mysql用户,否则外部不能使用root用户登录

    -v /data/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf 服务器的

    /data/mysql/conf/my.cnf配置映射到docker的my.cnf

    -v /data/mysql/data:/var/lib/mysql 映射数据库的数据目录,避免docker删除重新运行mysql容器,导致数据丢失

    -e MYSQL_ROOT_PASSWORD=123456 设置root账号的密码

    –name mysql mysql:5.7 从docker镜像mysql:5.7启动一个容器,并设置容器的名称为mysql

    –character-set-server=utf8mb4 –collation-server=utf8mb4_general_ci 设置数据库默认编码

    原文链接:https://blog.csdn.net/qsm44593342/article/details/132775772

  • docker中mysql关闭二进制日志

    docker中mysql关闭二进制日志

    1.创建my.cnf文件

    # 删除旧的 my.cnf 文件(如果存在)
    rm -f my.cnf
    
    # 创建新的 my.cnf 文件并写入内容
    echo -e "[mysqld]\nskip-log-bin" > my.cnf
    
    # 确保文件权限正确
    chmod 644 my.cnf

    2.将my.cnf映射出来

    services:
      mysql:
        image: mysql
        container_name: mysql
        restart: always
        ports:
          - "3306:3306"
        volumes:
          - ./mysql:/var/lib/mysql
          - ./my.cnf:/etc/mysql/my.cnf
        environment:
          MYSQL_ROOT_PASSWORD: xxxxxxx
          MYSQL_USER: xiaogang
          MYSQL_PASSWORD: xxxxxxx
    

    3.重新启动docker容器

    docker-compose down
    docker-compose up -d
    

    4.进入容器验证

    docker exec -it mysql mysql -u root -p

    然后输入密码进入mysql中

    5.验证

    SHOW BINARY LOGS;
    
    #结果:ERROR 1381 (HY000): You are not using binary logging
    
    SHOW VARIABLES LIKE 'log_bin';
    
    #结果:OFF
  • docker-compose:mysql+redis+phpmyadmin

    docker-compose:mysql+redis+phpmyadmin

    创建my.cnf文件

    # 删除旧的 my.cnf 文件(如果存在)
    rm -f my.cnf
    
    # 创建新的 my.cnf 文件并写入内容
    echo -e "[mysqld]\nskip-log-bin" > my.cnf
    
    # 确保文件权限正确
    chmod 644 my.cnf
    

    docker-compose.yml文件

    version: '3'
    services:
      mysql:
        image: mysql
        container_name: mysql
        restart: always
        ports:
          - "3306:3306"
        volumes:
          - ./mysql:/var/lib/mysql
          - ./my.cnf:/etc/mysql/my.cnf
        environment:
          MYSQL_ROOT_PASSWORD: root密码
          MYSQL_USER: xiaogang
          MYSQL_PASSWORD: 用户密码
    
      redis:
        image: redis:alpine
        container_name: redis
        restart: always
        ports:
          - "6379:6379"
        volumes:
          - ./redis:/data
    
      phpmyadmin:
        image: phpmyadmin:latest
        container_name: myadmin
        restart: always
        ports:
          - "13306:80"
        environment:
          PMA_ARBITRARY: 1

    运行容器

    docker-compse up -d

  • screen使用教程

    screen使用教程

    一、screen命令是什么?

    Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

    二、如何安装screen命令?

    除部分精简的系统或者定制的系统大部分都安装了screen命令,如果没有安装,CentOS系统可以执行:yum install screen ;

    CentOS 8上移除了screen,需要安装epel后安装screen执行:yum install screen ;

    Debian/Ubuntu系统执行:apt-get install screen 。

    三、screen命令使用方法?

    1、常用的使用方法

    用来解决文章开始我们遇到的问题,比如在安装lnmp时。

    1.1 创建screen会话

    可以先执行:screen -S lnmp ,screen就会创建一个名字为lnmp的会话。 VPS侦探 https://www.vpser.net/

    1.2 暂时离开,保留screen会话中的任务或程序

    当需要临时离开时(会话中的程序不会关闭,仍在运行)可以用快捷键Ctrl+a d(即按住Ctrl,依次再按a,d)

    1.3 恢复screen会话

    当回来时可以再执行执行:screen -r lnmp 即可恢复到离开前创建的lnmp会话的工作界面。如果忘记了,或者当时没有指定会话名,可以执行:screen -ls screen会列出当前存在的会话列表,如下图:

    11791.lnmp即为刚才的screen创建的lnmp会话,目前已经暂时退出了lnmp会话,所以状态为Detached,当使用screen -r lnmp后状态就会变为Attached,11791是这个screen的会话的进程ID,恢复会话时也可以使用:screen -r 11791

    1.4 关闭screen的会话

    执行:exit ,会提示:[screen is terminating],表示已经成功退出screen会话。VPS侦探 https://www.vpser.net/

    2、远程演示

    首先演示者先在服务器上执行 screen -S test 创建一个screen会话,观众可以链接到远程服务器上执行screen -x test 观众屏幕上就会出现和演示者同步。

    3、常用快捷键

    Ctrl+a c :在当前screen会话中创建窗口
    Ctrl+a w :窗口列表
    Ctrl+a n :下一个窗口
    Ctrl+a p :上一个窗口
    Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换

    出处:VPS侦探 本文链接地址:https://www.vpser.net/manage/screen.html

  • 宝塔和XUI共存方案

    宝塔和XUI共存方案

    x-ui是一个搭建节点的工具,有一键安装脚本,可以快速的部署。但是如果我们经济有限的话,这个服务器不仅要有x-ui还要有自己搭建的网站。这就得用我的这种搭建过程了。

    第一步:安装宝塔

    首先要将宝塔安装上,这就不用多说了,自己去网站找到适合自己系统的安装脚本就Ok了。

    第二步:创建站点

    新建一个静态站点并且为网站配置ssl,这个域名是为了以后x-ui面板伪装配置的。

    第三步:安装X-UI

    这里直接一键脚本安装,没什么难度

    bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)

    第四步:登录X- UI修改后台目录

    第五步:设置宝塔反代

        location ^~ /main/ { #(修改为你的xui管理面板路径)
            proxy_pass http://127.0.0.1:54321/HJgj/; #(修改为你的xui管理面板端口和路径)
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location /jgvgk { #(修改为你的ws传输协议路径)
            proxy_redirect off;
            proxy_pass http://127.0.0.1:12896; #(修改为你的协议端口)
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $http_host;
            proxy_read_timeout 300s;
           # Show realip in v2ray access.log
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

    设置完就可以通过域名:端口号\main\访问了。

  • Debian12/11/10,如何启用或关闭 BBR

    Debian12/11/10,如何启用或关闭 BBR

    什么是 BBR

    BBR 是 Google 提出的一种新型拥塞控制算法,可以使 Linux 服务器显著地提高吞吐量和减少 TCP 连接的延迟。

    BBR解决了两个问题:

    • 再有一定丢包率的网络链路上充分利用带宽,非常适合高延迟,高带宽的网络链路。
    • 降低网络链路上的 buffer 占用率,从而降低延迟,非常适合慢速接入网络的用户。

    互联网曾广泛使用基于丢包的拥塞控制算法,例如 Reno(Jac88,Jac90,WS95 ,RFC5681)和 CUBIC(HRX08,draft-ietf-tcpm-cubic),这类算法认为丢包和拥塞是等效的。长久以来这类算法都运作的很好,但这并不能说明他们是绝对正确的,这种良好的表现是由于网络交换机和路由器的缓冲区都十分适配当时的网络带宽。而一旦发送者的发送速率足够快,缓冲区便会被快速填满,进而引发丢包。

    实际上丢包并不等效于拥塞。拥塞可以被看作是一种在网络路径中,传输中的数据量始终大于带宽-时延积的场景。随着互联网的不断发展,丢包现象在非拥塞场景下也频繁发生。而基于丢包的拥塞控制策略给网络带来了源源不断的问题:

    1. 浅缓存:在浅缓存场景下,丢包往往发生在拥塞之前。高速、长距离的现代网络,搭配上消费级的浅缓存交换机,基于丢包的拥塞控制算法可能会导致极其糟糕的吞吐量,而这种现象则归咎于这类算法对于丢包的过激反应。流量突发引起的丢包会使发送速率乘性递减(这种丢包现象在空闲网络中也会频繁发生)。这种动态特性,使得基于丢包的拥塞控制算法在实际应用中很难对网络带宽进行充分利用:维持10Gbps/100ms RTT的网络,必须要求其丢包率在0.000003%以下。而更为实际的1%的丢包率,则会导致其只能维持在3Mbps/100ms(无论是瓶颈带宽的性能如何)。
    2. 深缓存:在有着深缓存的瓶颈链路中,拥塞往往发送在丢包之前。在现今的的边缘网络中,基于丢包的拥塞控制算法对众多最后几英里的设备,进行了深缓存的反复填充,引发了不必要的数秒级的排队延时,也就是“缓冲膨胀”的问题。

    BBR拥塞控制算法使用了另类的方式,不用丢包去衡量拥塞是否发生,而是直接对网络建模来避免以及应对真实的拥塞(它使用网络测量来估计带宽和丢包率。它计算可以通过网络发送数据而不会导致拥塞或数据包丢失的最大速率。BBR 通过跟踪网络的往返时间 (RTT) 和在任何给定时间传输的数据量来实现这一点)。

    为什么使用 BBR

    BBR 可以通过减少数据包丢失和增加吞吐量来显著提高网络的速度和可靠性,BBR 非常适合需要高吞吐量和低延迟的应用程序。

    在 Debian 上启用 BBR 是一个非常简单的过程,我们仅需几步即可,建议使用 Debian 的伙伴都启用以下 BBR。

    如何启用 BBR

    本教程基于 Debian12,理论上 Debian10、11也同样适用,其他版本的 Debian 需要自行判断。

    我们先来输入如下命令检查一下你运行的系统是否支持 BBR,输入后如果界面没有任何输出则表示你的系统当前支持 BBR,如显示其它错误信息则表示不支持,理论上来说内核版本高于4.9就支持使用 BBR,如果低于4.9可以自行升级内核版本。

    sudo modprobe tcp_bbr

    如果你的系统支持 BBR,可以输入以下命令来查看当前是否已经启用了 BBR。

    sudo sysctl net.ipv4.tcp_congestion_control

    如果已经启用,界面会输出如下提示,无输出则表示未启用。

    net.ipv4.tcp_congestion_control = bbr

    如果未启用且支持 BBR,请输入如下命令,下面的命令会将默认排队规则设置为 fq 并启用 BBR 作为拥塞控制算法。

    sudo sh -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf' sudo sh -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'

    接着输入以下命令使其保存并生效。

    sudo sysctl -p

    至此,Debian 已经启用 BBR,为验证 BBR 是否启用成功,我们可以使用下面的验证命令。

    sudo sysctl net.ipv4.tcp_congestion_control

    或者

    lsmod | grep bbr

    界面输出下面几种提示皆表示已启用 BBR。

    net.ipv4.tcp_congestion_control = bbr net.ipv4.tcp_available_congestion_control = bbr cubic reno net.ipv4.tcp_available_congestion_control = reno cubic bbr tcp_bbr   20480   1

    如何关闭 BBR

    编辑 /etc/sysctl.conf 文件,将 net.core.default_qdisc = fq 以及 net.ipv4.tcp_congestion_control = bbr 这两行使用 # 号注释掉,然后执行如下命令。

    sudo sysctl -p

    最后重启一下服务器。

  • 使用iperf3使用进行测速本机和vps之间传输速度

    使用iperf3使用进行测速本机和vps之间传输速度

    介绍

    iperf3是测速、打流用的一款软件,可以测两点之间的网速,测试本地网卡的带宽,等等,有的朋友可能也用过,不多说了。

    服务器端安装方法

    debian系统可以直接使用apt进行安装

    apt install iperf3

    本机安装

    我这里是Mac系统,直接使用brew进行安装,如果没有安装brew先安装

    安装brew后运行brew install iperf3安装

    开始测速

    小鸡采用服务器模式

    iperf3 -s

    本地采用客户端模式

    iperf3 -c x.x.x.x -t 30 -P 10 -R

    -c:指定地址
    -t:测试多少秒,不加-t参数默认10秒
    -P:指定线程数(数值越大越接近真实带宽)
    -R:测试下载,不加-R参数是测试上传

  • Debian关闭IPv6的方法

    Debian关闭IPv6的方法

    尽管IPv6是互联网的新基石,有着数量多的优势,但是目前很多时候IPv6的支持并不完整,有时候会因为IPv6遇到一些奇奇怪怪的兼容性问题。于是就需要关闭IPv6而强制使用IPv4进行互联网连接。
    现给出两个方法,本质上都是通过改写sysctl实现的,第一种是在sysctl.d中新加入配置文件,第二中是直接修改sysctl.conf配置文件,推荐使用第一种从而避免误操作影响其他配置文件。

    方法一:在sysctl.d中新加入配置文件

    /etc/sysctl.d/文件夹中新建disable-ipv6.conf,并写入配置

    cd /etc/sysctl.d/
    touch disable-ipv6.conf
    echo net.ipv6.conf.all.disable_ipv6=1 > disable-ipv6.conf

    使用以下命令运行配置文件

    sysctl -p -f /etc/sysctl.d/disable-ipv6.conf

    如果使用ip a命令,在输出中没有发现IPv6地址,则说明成功关闭了IPv6功能。

    方法二:直接修改sysctl.conf配置文件

    打开/etc/sysctl.conf,在Uncomment the next line to enable packet forwarding for IPv6前一行添加以下三行内容:

    net.ipv6.conf.all.disable_ipv6=1net.ipv6.conf.default.disable_ipv6=1net.ipv6.conf.lo.disable_ipv6=1net.ipv6.conf.ens3.disable_ipv6 = 1

    注意ens3这个,由于每个设备的网卡名字都有可能不同,需要使用ip a命令查找一下具体的名称以替换掉ens3
    使用以下命令运行配置文件:

    sysctl -p

    如果使用ip a命令,在输出中没有发现IPv6地址,则说明成功关闭了IPv6功能。