温馨提醒:我是在虚拟机上测试的
- 网段:192.168.233.0/24
- 网关:192.168.233.2
- 已有主 IP:192.168.233.3
- 需要附加 IP 范围:192.168.233.4 ~ 192.168.233.253,一共 250 个附加 IP。
需求:外部任意访问该段任意 IP3-253,都可以 ssh 连接本机
步骤 1:确认网卡名称
bash
ip addr
我这里的网卡名是 ens33;如果你的是eth0或者其他的话,下面所有配置把ens33替换成eth0或者其他的
把/etc/netplan/ 目录下的文件内容改成下面这种

然后 netplan apply
步骤 2:禁用 cloud‑init 网络
bash
cd /etc/cloud/cloud.cfg.d
nano 99-disable-network-config.cfg
再把network: {config: disabled}这串写进上面的文件里面

步骤 3:禁用NetworkManager,启动systemd‑networkd
ubuntu 24.04 默认使用的是NetworkManager服务
bash
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl start systemd-networkd
systemctl enable systemd-networkd

步骤 4:编写脚本
由于192.168.233.4 ~ 192.168.233.253 ip数太多了,不可能一个一个去敲,所以脚本会方便一点
bash
nano /usr/local/bin/ipconf.sh
再把下面的这串写进去【ip网段那些换成你自己的就行】
bash
#!/bin/bash
NET_CONF="/run/systemd/network/20-ens33.network"
INTERFACE="ens33"
PRIMARY_IP="192.168.233.3/24"
GW="192.168.233.2"
SUBNET_BASE="192.168.233"
START_IP=4
END_IP=253
mkdir -p /run/systemd/network
cat > ${NET_CONF} <<EOF
[Match]
Name=${INTERFACE}
[Network]
Address=${PRIMARY_IP}
Gateway=${GW}
DNS=223.5.5.5
DNS=8.8.8.8
KeepConfiguration=static
EOF
for ((i=START_IP;i<=END_IP;i++));do
echo "Address=${SUBNET_BASE}.${i}/24" >> ${NET_CONF}
done
networkctl reload

赋予权限
bash
chmod +x /usr/local/bin/ipconf.sh
步骤 5:创建 systemd 服务,在 networkd 启动前生成配置
bash
nano /etc/systemd/system/ipconf.service
bash
[Unit]
Description=Generate ens33 large ip range config before networkd start
Before=systemd-networkd.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/ipconf.sh
[Install]
WantedBy=multi‑user.target

启用并执行
bash
systemctl daemon-reload
systemctl enable --now ipconf.service
systemctl restart systemd-networkd

步骤 6:测试验证
先模拟网卡up,down的情况
bash
ip link set ens33 down
ip addr

从上面结果来看,ip没了
bash
ip link set ens33 up
ip addr


我们查看一下/run/systemd/network/20‑ens33.network 这个文件【我们在创建ipconf.sh文件里面有写到】

我们从外面ping 192.168.233.3 ~ 192.168.233.253 任意几个ip是可以通的

重启机器情况
重启机器后,ip依然还在,外面也是能正常ping 通
步骤7:ssh测试验证
安装一下ssh【如果已经安装ssh了,这一步可忽略】

bash
apt update
apt install -y openssh-server
安装完成后,/etc/ssh下面会多出sshd_config服务端配置文件

启动并开机自启 ssh 服务
bash
systemctl start ssh
systemctl enable ssh

外部测试ssh



如果要允许root远程的话,编辑
/etc/ssh/sshd_config,然后将PermitRootLogin prohibit-password
改为
PermitRootLogin yes
记得把PermitRootLogin前面的#去掉
修改完重启 ssh
systemctl restart ssh
