我正在为我们的虚拟环境设置一个新的 Ubuntu 18.04 服务器模板,作为其中的一部分,我有一个在以前的版本上创建并使用过的脚本。
它所做的只是询问要使用的主机名、IP 设置和 NTP 服务器。然后,它使用 设置主机名hostnamectl
,将名称添加到 hosts 文件,使用 设置 NTP 服务器ntpdate
,将 IP 信息写出到/etc/network/interfaces
,下载所有更新,应用它们并重新启动。
此脚本在 18.04 中不起作用,因为设置静态 IP 的方式已经发生了很大变化。那么如何以编程方式设置静态 IP/网络掩码/DNS/网关?
编辑:18.04 的这个安装默认安装了 Cloudinit,这就是让我困惑的地方。所以我要下载另一个 ISO 并使用它。
但为了简化我的问题,是否有一个可以安装的 CLI 工具,可以通过一个简单的命令为我完成此操作。例如cli-tool <IP> <SUBNET> <GATEWAY> <DNS1> <DNS2>
?
答案1
18.04使用网络计划. 看看它的手册页
您可以让您的脚本写入一个.yaml
文件并使用或或/etc/netplan
“编译”它netplan apply
netplan try
netplan generate
此类文件的一个例子是:
ethernets:
match:
name: enp2s0
addresses: [10.0.4.5/8]
gateway4: 10.0.4.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4, 1.1.1.1, 9.9.9.9]
search: [mycompany]
我不太熟悉网络计划。所以我让你探索并修复我可能犯的错误。
答案2
@solsTiCe 是正确的,但是/etc/network/interfaces
仍然是配置网络的有效方法。
man interfaces
/etc/NetworkManager
顺便说一下,还有路线。
man NetworkManager.conf
事实上,netplan
渲染为NetworkManager。所以它实际上只是 NetworkManager 和 Systemd 的语法糖。