Ubuntu 22.04


2025年8月19日,系统调整。


安装基本工具

1
2
apt update
apt install zip unzip git curl wget nmap iptables iptables-persistent -y

修改密码

1
passwd

下载备份

1
2
3
4
wget https://xingyue.serv00.net/ubuntu819.zip
unzip ubuntu819.zip
wget https://xingyue.serv00.net/ubuntungin819x.zip
unzip ubuntungin819x.zip

安装 docker 与 docker compose

1
2
3
4
5
curl -fsSL https://get.docker.com | bash -s docker
curl -L "https://github.com/docker/compose/releases/download/v2.39.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker -v
docker-compose --version

一键登录

1
2
3
mkdir ~/.ssh && chmod 700 ~/.ssh
cd ~/.ssh
nano authorized_keys
1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMwe3w4S9SI8pjYMVnibPllQ2b33oB8fx8ZIp/GnyDG/qDdvMZcAYy1M+tmnOk9MViKzFu4agNH70GkdHtHeqzntrizVfdD80JTxigKE/35wEnOdk1k6BvpSCYMMBIqPnmjiXYMBbSDryQCixLJw+7LqYSL9C8+mOSlnzWVQfgdd6kmHzgSrlzn0xiiqOMwGZWn50dXSv8EVIHriqzp/IqD4RDWyqEhKolrZcAl3ukYqZTkkpHNF8YNM0cbKIQbFHHsW8LdCUPh+yZ3OTY9wS4nFmj9eVGHZw4lkBGB8vcHnnu69bW0XYQe/9GKQqOCuolNon9zcky0d9wuKp84Jaz rsa-key-20230612
1
chmod 600 authorized_keys

SSH 设置

1
nano /etc/ssh/sshd_config
1
2
3
4
5
6
7
8
9
Port 2500

# 禁止密码登录,使用密钥登录
PubkeyAuthentication yes
PasswordAuthentication no

# 端口转发
AllowTcpForwarding yes
GatewayPorts yes
1
systemctl reload sshd

初始化网络

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/bash

# 清空现有的所有规则
echo "清空现有的所有规则"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# 设置默认策略:接受所有传入流量,允许所有出去流量
echo "设置默认策略:接受所有传入流量,允许所有出去流量"
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 允许本机之间的通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 限制每秒最大 SYN 包数(防止端口扫描)
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 开启 docker 网络
iptables -A FORWARD -o docker0 -j ACCEPT
iptables -A FORWARD -i docker0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# SSH 访问
echo "允许端口 22 (SSH) 访问 "
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 2500 -j ACCEPT

# http https
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Xray
iptables -A INPUT -p tcp --dport 40000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 40000 -j ACCEPT

# Ws
iptables -A INPUT -p tcp --dport 50002 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 50002 -j ACCEPT

# 禁用 NPM 81 网页端;不明 3000 ppp 端口
iptables -A INPUT -p tcp --dport 81 -j DROP
iptables -A INPUT -p tcp --dport 3000 -j DROP

# 禁用端口
# iptables -A INPUT -p tcp --dport 49618 -j DROP

#删除 禁用 81 网页端规则
#iptables -D INPUT -p tcp --dport 81 -j DROP

# 加载 /etc/sysctl.conf 配置
sysctl -p
echo "加载 /etc/sysctl.conf 配置"

# 保存 iptables 规则
#iptables-save > /etc/iptables/rules.v4:这个命令会将当前的 iptables 配置保存到文件 /etc/iptables/rules.v4 中。
#cat /etc/iptables/rules.v4:显示文件 /etc/iptables/rules.v4 的内容,即当前保存的防火墙规则。
#systemctl enable iptables:这个命令将 iptables 服务添加到系统的启动项中,确保每次启动时防火墙规则都会自动加载。
#systemctl start iptables:启动 iptables 服务,使得防火墙规则立即生效。
#stemctl status iptables:显示当前服务的状态,可以查看哪些服务正在运行或已启动。

iptables-save > /etc/iptables/rules.v4
cat /etc/iptables/rules.v4
systemctl enable iptables
systemctl start iptables
# 查看 iptables 状态
# systemctl status iptables
echo "保存 iptables 规则"

# 重启 docker
systemctl restart docker
# 查看 docker 状态
# systemctl status docker
echo "重启 docker 完毕!"

查看状态

1
2
3
systemctl status docker
systemctl status iptables
cat /etc/iptables/rules.v4

网络优化

1
2
3
4
5
6
7
8
9
10
11
12
cat > /etc/sysctl.conf <<EOF
# 禁用 IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

# 禁用 ping
net.ipv4.icmp_echo_ignore_all = 1

# 调整 TCP 拥塞控制算法为 BBR
net.ipv4.tcp_congestion_control = bbr
EOF
1
nano /etc/sysctl.conf
1
sysctl -p

时区设置

1
timedatectl set-timezone Asia/Shanghai

ws 节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
location /rss {
proxy_redirect off;
# 反向代理
proxy_pass http://127.0.0.1:50002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';

# 禁用缓存(WebSocket 通常不需要缓存)
proxy_no_cache 1;
proxy_cache_bypass 1;

# 增强 WebSocket 连接稳定性
proxy_buffering off; # 禁用缓冲,WebSocket 协议不需要缓冲
tcp_nodelay on; # 开启 TCP_NODELAY,减少延迟
tcp_nopush on; # 开启 TCP_NOPUSH,减少传输中的数据碎片

# 调整缓冲区大小
proxy_buffer_size 16k;
proxy_buffers 8 16k;
proxy_max_temp_file_size 0; # 禁用磁盘临时文件,改为内存缓冲
}

总结

  1. ws 节点搭建在 ubuntu 有效,在 Alpine 不知道为什么不会成功。