Ubuntu设置静态IP地址

admin2022-12-29  350

我的CMS101S的盒子想要做NAS服务器默认是自动获取IP地址,动态的IP地址进行外网穿透可能会导致无法正确连接到盒子。

 

暂时还没有想到怎么修改Cloudflare官网的配置,也不知道能不能配置好之后再修改。干脆就直接把盒子的IP地址固定算了。

 

Ubuntu的静态IP地址设置与CentOS不太一样。而且盒子的配置和电脑版的Ubuntu也略有不同,不知道是不是版本的问题。

 

首先用ifconfig命令查看一下网络状态,找到网卡名称。我盒子的网卡名称就是eth0

 

然后编辑网卡配置文件,根据网上的资料显示,应该用下面这个命令:

vi /etc/network/interfaces

 

然后发现这个文件里面的内容跟资料上显示的配置文件内容不一样。文件内容显示:

source-directory /etc/network/interfaces.d

 

于是通过cd命令先进入/etc/network目录,再用ls命令看看这下面有哪些文件或文件夹。

 

果然看到有一个interfaces.d文件夹。

 

cd进入interfaces.d文件夹。

 

再ls看看这里面有些什么文件,结果就只有一个eth0文件。

 

这不正好就是以我的网卡名称命名的文件吗?打开看看:

vi eth0

 

内容显示,正是我们需要的网卡配置文件。如果不走上面的弯路,直接编辑的话就用下面的命令:

vi /etc/network/interfaces.d/eth0

 

编辑这个eth0文件,默认的文件内容如下:

auto eth0
iface eth0 inet dhcp

 

将dhcp修改成static,并添加IP地址、网关地址、子网掩码,就成这样了:

auto eth0
iface eth0 inet static
address 192.168.2.10
gateway 192.168.2.1
netmask 255.255.255.0

 

保存退出。然后还要修改DNS的配置文件:

vi /etc/resolv.conf

 

在此文件中修改nameserver信息,也就是DNS信息:

nameserver 192.168.1.1
nameserver 192.168.2.1

 

但这里有个很恼火的问题。

 

这个resolv.conf文件修改后,只要网络重启或系统重启,又会被改回去了。

 

通过度娘找到的资料显示:

 

不知道Ubuntu从哪个版本开始不是由NetworkManager生成resolv.conf的了,至少在13.04下是这样的,因为resolv.conf开头写着这样一句话:

Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

 

说是由resolvconf生成,NetworkManager仍然存在,因为它是DHCP上网不可缺少的,但此时禁止NetworkManager启动 已经不管用了,因为resolv.conf已经不归它管了,我们试着看看resolv.conf与resolvconf有啥关系,查看:

hadoop@Master:~$ ll /etc/resolv.conf
lrwxrwxrwx 1 root root 29 9月 11 2013 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

 

说明/etc/resolv.conf 其实只是一个link,它实际上指向的是 /run/resolvconf/resolv.conf,这也就解释了为什么每次重启都会被重写的原因,你改的只是个link,对原文件没有影响,而每次重启这个link还得加载原文件的内容,所以对link的修改无效。

 

也就是说,直接修改resolv.conf其实只是修改了link,并没有修改到真正的配置文件。真正的配置文件其实是这个:

/etc/resolvconf/resolv.conf.d/head

 

那么直接编辑这个文件:

vi /etc/resolvconf/resolv.conf.d/head

 

将nameserver的信息复制粘贴进去:

nameserver 192.168.1.1
nameserver 192.168.2.1

 

保存退出即可。

 

从度娘上查到的资料来看,还可以修改head文件同目录下的base文件,也就是:

vi /etc/resolvconf/resolv.conf.d/base

 

写文章的大佬也说没有测试,不知道行不行。

 

另外还有一种方法,就是直接修改之前的网卡配置文件,把DNS信息添加进去。

 

因为interfaces的配置文件优先级要比resolv.conf文件要高,所以直接把DNS的信息添加进之前编辑的eth0文件中就行了。

 

在CentOS里面网卡配置文件中DNS就直接是DNS,而在Ubuntu中DNS是dns-nameservers。

 

所以,把上面nameserver的内容修改成下面这样,再添加到eth0文件中即可:

dns-nameservers 192.168.1.1
dns-nameservers 192.168.2.1

 

总结下来就两步。

 

第一步,编辑网卡配置文件:

vi /etc/network/interfaces.d/eth0

 

第二步,清空配置文件,把下面的内容复制粘贴到配置文件中:

auto eth0
iface eth0 inet static
address 192.168.2.10
gateway 192.168.2.1
netmask 255.255.255.0
dns-nameservers 192.168.1.1
dns-nameservers 192.168.2.1

 

前提是配置文件中只有以下这两条内容,就可以清空,否则就用修改添加的方式:

auto eth0
iface eth0 inet dhcp

 

修改完后重启网络:

/etc/init.d/networking restart

 

这样就OK了。

 

感觉要比CentOS复杂一丢丢,尤其是重启网络的命令,有时候可能还会报错?

 

反正我没有报错,以后再慢慢研究吧。

转载请注明原文地址:http://198484.com/?read-33.html
000

最新回复(0)