2025年3月

操作系统版本
server版
版本详情:

$ lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy

参考:

官方文档

虚拟化软件
如果使用VMWare Workstation Pro或者Virtualbox安装虚拟机建立工作流,十分推荐链接克隆功能,只需要几秒就可以从模板虚拟机的快照创建一个全新的虚拟机,本篇博客其实也是一篇建立模板的最佳实践。
网络
一般来说虚拟机使用两张网卡满足网络访问需求,即网络地址转换+仅主机,其中仅主机使用固定IP,网络地址转换使用DHCP,比较新的Ubunru中使用netplan作为默认的网络管理工具,执行命令sudo vim /etc/netplan/00-installer-config.yaml可以看到这种模式下的网络配置:

network:

ethernets:

enp0s3:                # 仅主机网卡
  addresses:
    - 192.168.56.57/24 # 指定静态IP
enp0s8:                # 网络地址转换网卡
  dhcp4: true
  nameservers:         # 指定DNS,在DNS部分另外说明
    addresses:
      - 8.8.8.8

version: 2

DNS相关的配置会在后面提到,这种模式可能出现的问题是一旦关闭NAT网卡的DHCP则无法连接互联网,其本质是OS无法通过DHCP获得默认网关和DNS配置,但某些情况下所有网卡静态IP是必须的,比如部署K8s,否则可能会导致被分配新的IP后组件间无法通信,这里给出一份仅使用NAT网卡的配置,它也适用于多网卡配置静态IP:

network:

ethernets:

ens33:                   # 网络地址转换网卡
  dhcp4: false
  addresses:
    - 192.168.195.50/24  # 指定静态IP
  routes:                # 指定默认网关
    - to: default
      via: 192.168.195.2
  nameservers:
    addresses:
      - 8.8.8.8
      - 192.168.195.2    # 指定默认网关为DNS服务器

version: 2

修改配置文件后执行命令sudo netplan apply,以立即应用更改,注意,SSH登录时,如果变更会造成网络中断,应避免使用命令sudo netplan try,否则在执行命令后将无法确认更改,直到超时后配置自动回滚。此配置下,虚拟机和宿主机可以互ping,需要考虑的问题是防火墙和ICMP回显是否打开,例如无法ping通Windows宿主机的网关地址,需要修改宿主机的防火墙规则:进入防火墙和网络保护-允许应用通过防火墙-更改设置-允许“文件和打印机共享”即可。

如果执行apply命令出现以下警告:

# 配置文件权限警告

(generate:1170): WARNING : 10:48:44.225: Permissions for /etc/netplan/00-installer-config.yaml are too open. Netplan configuration should NOT be accessible by others.

服务缺失警告

WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.

执行命令sudo chmod 600 /etc/netplan/00-installer-config.yaml修改配置文件权限(权限必须为600),ovsdb-server.service服务不是必须的,这里不安装它。
对于网络调试,给出以下建议:

# 查看网卡的DNS路由等信息

sudo netplan status

查看系统路由

route

查看DNS状态

resolvectl status

解析域名

nslookup baidu.com

从指定的DNS解析域名

nslookup baidu.com 8.8.8.8

Shell脚本解释器
目前,Debian和Ubuntu中,/bin/sh已经默认软链到dash,而非bash,dash拥有更快的执行速度,偏向运行程序,而bash有更多的功能,偏向交互,二者的语法是不同的,例如dash不支持function关键字,因此在Ubuntu默认配置下使用sh <包含function关键字的脚本>会报错,需要使用bash命令运行,而脚本头中指定的解释器只有在特定情况(脚本具有执行权限,且使用.或者source执行)下才能生效。

用户和权限
ubuntu不建议使用root登录,而是使用sudo提权,安装后可配置指定用户的sudo免密:

$ sudo visudo

修改

%sudo ALL=(ALL:ALL) ALL

%sudo ALL=(ALL:ALL) NOPASSWD:ALL

防火墙
关闭防火墙:

# 查看状态

sudo ufw status verbose

关闭

sudo ufw disable

启动

sudo ufw enable

APT源
在22.04中不用修改apt源,系统会自动匹配当前地区最快的镜像。

DNS
当虚拟机联通互联网的网络被配置为DHCP时,将从DHCP服务器自动获得DNS配置,此时可能出现部分域名无法解析的问题,通过执行resolvectl status命令可以看到127.0.0.53的上游DNS服务器,以帮助定位域名解析问题的根本原因:

# 默认DNS无法解析

ian@ian:~$ nslookup raw.githubusercontent.com
Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
Name: raw.githubusercontent.com
Address: 0.0.0.0
Name: raw.githubusercontent.com
Address: ::

指定DNS可解析

ian@ian:~$ nslookup raw.githubusercontent.com 8.8.8.8

当系统自动获得的DNS不能满足需求时,需要手动指定DNS服务器,对于Ubuntu,指定DNS的复杂性主要体现在识别当前使用的网络管理工具,否则系统重启后指定的配置被覆盖或者不能生效。从网络上得到的信息看,至少自18.04版本开始,netplan已经作为默认的网络管理工具,因此需要修改/etc/netplan路径下的配置文件,这里是00-installer-config.yaml,修改详情看前面的网络部分,这里不重复贴出配置内容。另外一种方法是使用静态文件替换/etc/resolv.conf文件,或者将它链接到一个新的文件,并在其中指定DNS。还有一种情况是容器继承主机的DNS配置(比如CoreDNS),当主机DNS仅有网关时,容器将无法成功运行。

时区
执行以下命令:

# 显示当前时区配置

timedatectl

设置时区

sudo timedatectl set-timezone Asia/Shanghai

修改为24小时制

echo "LC_TIME=en_DK.UTF-8" | sudo tee -a /etc/default/locale && cat /etc/default/locale
sudo reboot

验证

date

配置命令行
在~/.profile文件中增加,仅仅修改了默认值中的\w为\W,显示当前目录名称,而不是其绝对路径:

# set view

export PS1="[\e]0;\u@\h: \W\a]${debian_chroot:+($debian_chroot)}[\033[01;32m]\u@\h[\033[00m]:[\033[01;34m]\W[\033[00m]$ "

关闭swap
执行命令sudo swapoff -a立即关闭swap,执行命令sudo vim /etc/fstab注释其中的swap行,永久关闭swap,并删除swap文件sudo rm -rf /swap.img

升级包

如果登录后提示类似43 updates can be applied immediately.这样的内容,可执行命令apt list --upgradable查看能够升级的包,或者执行命令sudo apt upgrade升级(可能会导致操作系统的修订版本号变更,例如从22.04.2变更为22.04.3,修订版本号变更不会有不兼容的变化产生),升级或者安装包的过程中可能会看到这样的交互界面卡住升级过程,需要人工介入:

QQ浏览器截图20250316182554.png
这是由 needrestart命令触发的,它的主要作用是检查库升级后有那些需要重启的守护进程。默认是交互式的,可以执行命令sudo vim /etc/needrestart/needrestart.conf,复制$nrconf{restart} = 'i';行并取消注释,将i修改为a是自动重启守护进程(先复制后修改,一般情况下可以帮助我们了解默认配置是什么),修改为l是列出需要重启的守护进程,这里根据守护进程的重启影响评估,测试环境可以设置为自动重启。

主机名
如果需要变更主机名,可以执行命令sudo hostnamectl hostname 修改主机名,需要注意,主机名需要符合域名命名规范,可以这样验证,执行命令hostnamectl status,如果其中包含Pretty hostname键,说明主机名非法,它的值是原始设置,hostnamectl将非法值自动转换为Static hostname键对应的值,这是真正的生效值。最后执行命令sudo vim /etc/hosts编辑配置,将127.0.0.1对应的值更新为新的主机名。

定制登录提示信息
如果需要定制登录提示信息,可以参考 motd - message of the day,也可以在互联网搜索关键字motd,也可以参考这篇博客:Ubuntu登录提示信息(MOTD)定制与开关,这里做了这些操作:

# 将ENABLED设为0,关闭news

sudo vim /etc/default/motd-news

将不需要的提示信息文件移入disable以禁用

禁用策略:

1. 排除已经关闭的,比如news

2. 排除无明确影响的,即根据看到的信息渐进修改

sudo mkdir /etc/update-motd.d/disable
cd /etc/update-motd.d

sudo mv \
10-help-text \
91-release-upgrade \
disable

快捷启用代理
如果ubuntu作为虚拟机,可以通过别名快速设置代理,假设宿主机的代理软件本地http监听端口为10809,并且允许来自局域网的连接,在网关地址为192.168.62.1时,可以在~/.profile中添加别名:

# vpn alias

alias setvpn="export http_proxy=http://192.168.62.1:10809; export https_proxy=http://192.168.62.1:10809"
alias unsetvpn="unset http_proxy; unset https_proxy"

测试:

# 生效

source ~/.profile

设置代理

setvpn

测试

curl -I www.goole.com

这里有几个问题需要注意:

  1. 设置代理的环境变量有很多,比如http_proxy、HTTP_PROXY、ALL_PROXY等,但具体程序会识别不同的环境变量、不同的协议,比如curl可以识别http_proxy、ALL_PROXY,且后者支持socks5协议,而apt只能识别http_proxy,且不支持socks5协议,尽量采取通用的配置;
  2. 同时设置http_proxy和https_proxy变量,均指向http代理端点,否则https的流量无法代理;
  3. 当使用sudo时,默认会重置环境变量,因此无法继承非root shell中用于配置代理的环境变量,要改变此行为需要执行sudo visudo命令,在sudoers文件中解除对Defaults:%sudo env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"行的注释,放行相关的环境变量,变量名大小写敏感;

建立工作空间
将指定目录作为工作空间能够隔离类似.profile的配置文件:

mkdir ~/workspace

echo -e "\ncd ~/workspace\n" >> ~/.profile

还可以配置一些其他的alias快捷方式。

其他常用操作
清理journal日志:

# 查看日志占用空间

sudo journalctl --disk-usage

清理一周之前生成的日志

sudo journalctl --vacuum-time=1w

清理超出指定大小的日志

sudo journalctl --vacuum-size=500M

一、准备工作

1、VPS一台,重置好Dibian系统,看清楚是Dibian系统(本期视频梦歌使用的VPS官网:【点此进入】)

2、有条件的准备一个域名,没条件的不用域名也可以

3、Cloudflare官网地址:【点此进入】(PS:解析域名使用,不想用域名可以跳过这一步!)

4、使用 Finalshell SSH工具

Finalshell下载地址:点此下载 (支持:windows MacOS Linux)

5、V2rayN下载地址:点此打开

二、相关IP检测网站

查询IP信息:https://ipinfo.io
ip欺诈风险查询:https://scamalytics.com/ip
检测上网环境:https://whoer.net
IP检测:https://ipjiance.com
IP检测:https://ping0.cc

三、USA落地机
更新Dibian系统

sudo apt update -y

安装git

sudo apt install git -y

部署xray面板

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

域名申请证书 (没有域名的可以跳过这一步)

git clone https://github.com/slobys/SSL-Renewal.git /tmp/acme && mv /tmp/acme/* /root && bash acme_3.0.sh

BBR PLUS 拥堵控制算法

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

解锁检测

bash <(curl -sL IP.Check.Place)

四、香港中转机

部署极光面板

bash <(curl -fsSL https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/install.sh)

BBR PLUS拥堵控制算法

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh