如何在Linux和Unix中配置静态IP地址

时间:2020-03-21 11:43:03  来源:igfitidea点击:

配置IP地址是每个Linux和UNIX管理员应该学习的强制性技能之一。
我们可以在GUI模式下轻松配置IP地址。
但它在命令行模式中完全不同。
此步骤本教程描述了如何在Linux和UNIX操作系统中配置静态IP地址。
下面提供的步骤在CentOS 7 Server,Ubuntu 16.04 Server,Ubuntu 18.04 LTS服务器和桌面版本和FreeBSD 12上测试。
但是,它应该在基于大多数基于RPM和基于Deb的Linux系统和UNIX Flavors上工作。

在Linux中配置静态IP地址

首先,我们将看到如何在基于RPM的系统上配置IP地址。

在Rhel/CentOS/Fedora/Scientific Linux上配置静态IP地址:

在Fedora,Rhel及其克隆等CentOS,科学Linux,网络接口卡(短NIC)配置将存储在/etc/sysconfig/network-scripts /目录下。

注意:此处,我将所有命令运行为root用户。
如果我们以普通用户身份登录,只需在每个命令的前面使用"sudo"。

首先,让我们找到网卡的名称。
为此,运行:

# ip link show

示例输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:80:63:19 brd ff:ff:ff:ff:ff:ff

或者,使用此命令显示详细输出:

# ip addr

示例输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 08:00:27:80:63:19 brd ff:ff:ff:ff:ff:ff
 inet 192.168.225.150/24 brd 192.168.1.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet6 fe80::a00:27ff:fe80:6319/64 scope link 
 valid_lft forever preferred_lft forever

通常,有线网卡名称将从字母"e"开始,无线卡名称将从"w"开始字母。

如上所述,我有线网卡名称是ENP0S3.
分发可能是不同的,但它通常以字母"e"开头。

让我们现在将静态IP地址配置为此NIC。

在任何编辑器中打开网卡配置文件:

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

其中VI是文本编辑器。
我们可以使用我们选择的任何文本/图形编辑器,例如Nano或者Gedit。

添加IP地址,子网掩码,网关和DNS服务器,如下所示。

TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="e9f9caef-cb9e-4a19-aace-767c6ee6f849"
ONBOOT="yes"
HWADDR="08:00:27:80:63:19"
IPADDR0="192.168.225.150"
PREFIX0="24"
GATEWAY0="192.168.225.1"
DNS1="8.8.8.8"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"

这就是典型的网卡配置文件在任何基于RPM的系统中的样子。
我们是否注意到我以粗体标记的线条(以及镜像中的箭头)?
那些是重要的线条。

让我解释一下这些行:

  • bootproto ="none" - 此行表示应手动配置网卡的IP地址。如果将值设置为"DHCP",则网卡将接受来自网络中任何DHCP服务器的IP地址。
  • ipaddr0 ="192.168.225.150" - 此行表示网卡的IP地址。其中我们可能已经注意到线路ipaddr之后的0(零)。这表明此卡只有一个IP地址。如果要设置多个IP地址(i.e虚拟IP地址),则添加新行 - 例如ipaddr1,ipaddr2并设置我们选择的不同IP地址。
  • Prefix0 ="24" - 此行表示子网掩码,例如:255.255.255.0。其中我们可以使用行前缀1,前缀2等指定多个子网。
  • Gateway0 ="192.168.225.1" - 这是NIC的网关地址。
  • dns1 ="8.8.8.8" - 名称服务器地址。

设置所有详细信息,保存并关闭文件。
重新启动网络服务以使更改生效。

# systemctl restart network

或者,只需重新启动系统。

现在,使用命令验证新的静态IP地址:

# ip addr

或者,我们可以检查具体的网卡的地址,如下所示。

# ip a s enp0s3

示例输出:

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:80:63:19 brd ff:ff:ff:ff:ff:ff
inet 192.168.225.150/24 brd 192.168.225.255 scope global noprefixroute enp0s3
valid_lft forever preferred_lft forever
inet6 2405:204:714e:faa:a00:27ff:fe80:6319/64 scope global noprefixroute 
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe80:6319/64 scope link noprefixroute 
valid_lft forever preferred_lft forever

或者,我们可以使用NetworkManager Tui(nmtui)实用程序来配置IP地址。

如果未安装它,则可以使用命令安装它:

# yum install NetworkManager-tui

现在,通过输入以下命令启动NMTUI实用程序:

# nmtui

选择"编辑连接"选项:

选择网卡以从左窗格配置,然后在右侧选择"编辑"选项,然后点击Enter键:

输入IP地址,网络掩码,网关和DNS细节等。
最后,单击"确定"以保存更改。

重新启动网络服务或者重新启动系统以生效更改。

建议阅读:

  • 如何在Linux中为单个网卡分配多个IP地址

在Debian/Ubuntu上配置静态IP地址:

所有NIC配置文件都存储在基于DEB系统中的/etc/network /目录下。

要在基于DEB的系统中配置静态IP地址,请执行以下操作。

在任何编辑器中编辑/etc/network/interfaces /文件:

$sudo nano /etc/network/interfaces

添加或者修改以下行以配置静态IP地址。

auto enp0s3
iface enp0s3 inet static
 address 192.168.1.105
 netmask 255.255.255.0
 gateway 192.168.1.1
 dns-nameservers 192.168.1.1

保存并关闭文件。

使用命令重新启动网络服务:

$sudo systemctl restart Hyman@theitroad

或者,只需重新启动系统。

现在,使用以下任何一个命令检查新的静态IP地址:

$ifconfig
$ip addr
$ip a s enp0s3

示例输出:

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 08:00:27:12:f8:c1 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.105/24 brd 192.168.1.255 scope global enp0s3
 valid_lft forever preferred_lft forever
 inet6 fe80::a00:27ff:fe12:f8c1/64 scope link 
 valid_lft forever preferred_lft forever

从Ubuntu 17.10开始,我们不再使用/etc/network/interfaces文件来配置IP地址。
在最近的Ubuntu版本中,我们使用Netplan实用程序配置IP地址。

在UNIX中配置静态IP地址

我们刚刚学习了如何在Linux中从命令行配置静态IP地址。
现在让我们在UNIX中配置静态IP地址。
出于本教程的目的,我将使用FreeBSD 12.

就像Linux一样,我们使用"ifconfig"命令查找网卡名称。
其中我以root用户身份登录以执行以下命令。

# ifconfig

示例输出:

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=81009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER>
	ether 08:00:27:7e:6d:d4
	inet6 fe80::a00:27ff:fe7e:6dd4%em0 prefixlen 64 scopeid 0x1 
	inet6 2405:204:714e:faa:a00:27ff:fe7e:6dd4 prefixlen 64 autoconf 
	inet 192.168.225.27 netmask 0xffffff00 broadcast 192.168.225.255 
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
	nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 
	inet 127.0.0.1 netmask 0xff000000 
	groups: lo 
	nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>

这里EM0是网络接口卡名称。

要配置静态IP地址,请编辑/etc/rc.conf文件:

# vi /etc/rc.conf

添加/修改如下所示的行。

hostname="freebsd.theitroad.local"
ifconfig_em0="inet 192.168.255.110 netmask 255.255.255.0"
defaultrouter="192.168.255.1"
local_unbound_enable="YES"
sshd_enable="YES"
moused_enable="YES"
ntpd_enable="YES"
powerd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

保存并关闭文件。

使用以下命令重新启动网络服务:

# /etc/rc.d/netif restart && /etc/rc.d/routing restart

现在,检查IP地址是否已更改或者不使用命令:

# ifconfig

要配置网卡以从DHCP服务器获取IP地址,仅添加或者修改以下行:

hostname="freebsd.theitroad.local"
ifconfig_em0="DHCP"

或者,

hostname="freebsd.theitroad.local"
ifconfig_DEFAULT="DHCP inet6 accept_rtadv"

保存并关闭文件。
重新启动网络服务或者重新启动系统以生效更改。