说下背景,真的搞得头皮发麻,在Ubuntu上搭建Spark等集群涉及到设置静态IP,于是百度了如何设置,几乎将百度到的前面几个试了个遍,要不就是抄来抄去,关键是抄的还不管用,配置完以后完全上不了网,要不就是纯属扯淡。
后面开始用bing搜索英文的,关键字ubuntu static ip,终于解决
参考:
https://www.howtoforge.com/linux-basics-set-a-static-ip-on-ubuntu#ubuntu-incl-ubuntu-lts
以下就是简单将原文中的英文翻译为中文:
Ubuntu 17.10及18.04 LTS
利用Netplan设置一个静态IP
Netplan的配置文件在/etc/netplan
目录下,默认的配置文件是/etc/netplan/01-netcfg.yaml
,终端输入
sudo vim /etc/netplan/01-netcfg.yaml
这里使用的是vim
进行编辑,当然别的编辑工具同理,下面以一个案例配置,具体的要根据自己的实际情况修改:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]
其中需要修改的部分就是ens33
,需要修改为你自己的网卡名,可以通过ifconfig
查询,还有就是你想设置的IP地址需要修改。
接下来就是使刚才的配置生效,终端输入:
sudo netplan apply
或者输入:
sudo netplan --debug apply
可以得到一些有用的信息如果你的netplan配置成功。执行完就OK了。
Ubuntu 12.04 - 17.04
配置network interface
终端输入:
sudo vim /etc/network/interfaces
在旧版本你会看到如下信息:
auto lo eth0
iface lo inet loopback
iface eth0 inet dynamic
新版本(Ubuntu16.04以及更高版本),network interface名称由eth0变为ens33,并且dynamic由dhcp代替,类似下面:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens33
iface ens33 inet dhcp
对于旧版本配置类似下面的格式:
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address xxx.xxx.xxx.xxx(enter your ip here)
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx(enter gateway ip here,usually the address of the router)
下面是一个例子:
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
而对于16.04或者更高,例子如下:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# test
# The primary network interface
auto ens33
iface ens33 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
保存,退出
配置DNS servers
a)对于版本号<14.04的,终端输入:
sudo vim /etc/resolv.conf
并在打开的文件中输入:
nameserver xxx.xxx.xxx.xxx(enter your dns server ip)
nameserver xxx.xxx.xxx.xxx(enter your alt dns server ip)
例如:
nameserver 8.8.8.8
nameserver 8.8.4.4
b)对于更高的版本
还是打开之前的文件,即:
sudo vim /etc/network/interfaces
其实上面的例子中已经添加了,保存并退出。
重启networking
a)Ubuntu<14.04
终端输入:
sudo /etc/init.d/networking restart
b)Ubuntu>=14.04
终端输入:
systemctl restart ifup@ens33
这里还是需要修改一下名称,我觉着原文这里有点错误,把旧版本的名称写到了这里。
配置Hostname并重启
最后一步千万不能省略,就是首先配置hostname,终端输入:
sudo vim /etc/hostname
在里面输入你的主机名,比如我的是
hadoop@slave02:~$
那么我的主机名就是slave02
接下来修改hosts,终端输入:
sudo nano /etc/hosts
将你的主机名对应你的IP,比如我的就是:
192.168.1.100 slave02
到这里就配置完成,重启电脑来使刚才的配置生效。