Linux配置静态IP联网

GO

1. CentOS6 的网络配置

1.1. 获取IP、网关等信息

安装好CentOS后,第一件事情就是配置IP,让机器连接网络,之后便能够通过远程工具(如Putty、Xshell、SecureCRT等)来进行管理了。

  1. 首先,可以用 ifconfig 查看网卡的IP等信息。
    • 输入 ifconfig 后默认只有一个网卡的信息,即 lo 网卡,它是回环网卡,每个计算机都有这个网卡IP的,它的主要作用是机器内部通信。
    • 可以用 ifconfig -a 来查看所有网卡的信息(包括未启用的网卡)。一般会显示名字类似 eth0 网卡的信息,这时候这块网卡还未启用,接下来我们应该启用它。
  2. 用 dhclient 让网卡自动获取一个IP。
    • 这个命令是自动获取IP的命令,如果Linux所在网络环境有dhcp服务器,运行该命令后,Linux机器就可以自动获取到一个IP。(在服务器上用不到)
    • 此时,这个IP是自动获取的,也就是动态的,实际机房的服务器IP并不是自动获取的,都需要固定好,所以,应该为eth0网卡设置一个静态IP。
  3. 在设置静态IP之前,先用 route 命令查到 NETMASK 和 GATEWAY,以便我们在设置静态IP时填在配置文件里。
    • route 这个命令是用来查看路由的。
    • route -n 可查看到网关。
    • 还有一个命令可以查看到IP地址: ip add
  4. 配置网卡的配置文件

1.2. 配置网卡配置文件

配置eth0网卡为静态IP,即配置该网卡的配置文件。

  1. 它的配置文件类似于 /etc/sysconfig/network-scripts/ifcfg-eth0
  2. 在这个配置文件中需要更改的地方有:

    1
    2
    3
    4
    5
    6
    7
    8
    ONBOOT=no 改为 yes //开机启动网卡
    BOOTPROTO=dhcp 改为 static //IP的类型,动态还是静态
    ==>新添加的几行内容:
    IPADDR=192.168.1.222 //这个IP地址是我们通过命令 ifconfig eth0 查到的。(之前通过dhclient命令获取的动态IP,可以自己填写为合适的IP地址)
    NETMASK=255.255.255.0 //子网掩码
    GATEWAY=192.168.1.1 //网关
    DNS1=202.106.0.20 //域名服务器的地址,目前的IP地址为联通的一个DNS服务器IP。
    DNS2=8.8.8.8 //可以添加多个DNS服务器IP,就像这样写成DNS1和DNS2
  3. 修改后的配置文件内容如下所示(一个例子):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DEVICE=eth0
    HWADDR=00:0C:29:B0:78:92
    TYPE=Ethernet
    UUID=5efd98d1-d7b2-447f-9036-e4c73dfab70a
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=static
    IPADDR=192.168.0.103
    NETMASK=255.255.255.0
    GATEWAY=192.168.0.1
    DNS1=4.4.4.4
    DNS2=8.8.8.8

1.3. 重启网络服务

修改完配置文件后,需要将网络服务重启才能生效。输入下面的命令即可重启网络服务:

  • service network restart
  • 或者 /etc/init.d/network restart

1.4. 测试网络连通性

通过 ping 命令来测试一下网络的连通性:

  • ping www.sina.com
  • 如果ping通了,就说明静态IP配置成功,并能连接外网了。
  • 在Linux下ping会一直持续,需要按快捷键 Ctr+C 终止该程序。

2. CentOS7 的网络配置

2.1. 获取IP、网关等信息

  1. 自动获取IP : dhclient
  2. 查看自动获取IP后是否可以联网 : ping www.sina.com
  3. 查看IP : ip addr
  4. 查看网关 : ip route

2.2. 配置网卡配置文件

这一步是为了配置静态IP。

  1. 网卡的配置文件的名字类似于 /etc/sysconfig/network-scripts/ifcfg-ens33
  2. 在这个配置文件中需要更改的地方有:

    1
    2
    3
    4
    5
    6
    7
    8
    ONBOOT=no 改为 yes //开机启动网卡
    BOOTPROTO=dhcp 改为 static //IP的类型,动态还是静态
    ==>新添加的几行内容:
    IPADDR=192.168.1.222 //这个IP地址是我们通过命令 ifconfig eth0 查到的。(之前通过dhclient命令获取的动态IP,可以自己填写为合适的IP地址)
    NETMASK=255.255.255.0 //子网掩码
    GATEWAY=192.168.1.1 //网关
    DNS1=202.106.0.20 //域名服务器的地址,目前的IP地址为联通的一个DNS服务器IP。
    DNS2=8.8.8.8 //可以添加多个DNS服务器IP,就像这样写成DNS1和DNS2
  3. 修改后的配置文件内容如下所示(一个例子):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    TYPE=Ethernet
    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=18e90827-5eed-4b32-a5e1-3abdad76d8cc
    DEVICE=ens33
    ONBOOT=yes
    IPADDR=192.168.0.105
    NETMASK=255.255.255.0
    GATEWAY=192.168.0.1
    DNS1=119.29.29.29

2.3. 重启网络服务

  • 重启网络服务 systemctl restart network.service
  • 再查看IP检查是否正确 ip addr

2.4. 测试网络连通性

  • ping -c 4 www.sina.com

3. 网络初识补充内容

3.1. 网卡名称说明

  • lo:回环网卡,只在本地使用
  • eth0:以太网卡,用以太网线连接
  • fddil:光纤网卡,用光纤网线连接

3.2. ifconfig 查看网卡IP

ifconfig不加任何参数,只打印当前网卡的IP相关信息(子网掩码、网关等),在之前的博客中已经记录了关于这个命令的使用。在shell下设置IP,需要修改相关的配置文件,/etc/sysconfig/network-scripts/ifcfg-eth0,如果是eth1网卡,则是/etc/sysconfig/network-scripts/ifcfg-eth1,若是ens33网卡,则是/etc/sysconfig/network-scripts/ifcfg-ens33。

如果Linux上有多个网卡,而只想重启某一个网卡的话,可以使用这个命令:
ifdown eth0 ; ifup eth0
ifdown 即停掉网卡,ifup即启动网卡。有一点需要注意,如果我们远程登陆服务器,当使用ifdown eth0这个命令的时候,很有可能后面的命令ifup eth0不会被运行,这样导致我们断网而无法连接服务器,所有请尽量使用service network restart这个命令来重启网卡。

3.3. 查看网卡连接状态

查看网卡连接状态的命令为:mii-tool eth0

  • 在虚拟机上该命令所显示的内容是: SIOCGMIIPHY on 'eth0' failed: Operation not supported
  • 在真机上该命令所显示的内容是:eth0: nogotiated 100baseTx-FD, Link ok
  • 只要看到”Link ok”就说明网卡为连接状态,如果显示”No link”说明网卡坏掉了或者没有连接网线。

还有一个命令也可以查看网卡的状态:ethtool 网卡名

  • 如果网卡没有连接,最后面一行Link detected显示为no
  • 命令示例如下:
    1
    2
    3
    [root@theshuhost ~]# ethtool eth0
    Settings for eth0:
    Link detected: yes

3.4. 单网卡配置多个IP

临时的:

  • ifconfig eth0:1 192.168.1.2/255.255.255.0

永久的:

在Linux系统中,网卡是可以设定多重IP的。其方法如下:

  • cd /etc/sysconfig/network-scripts/
  • cp ifcfg-eth0 ifcfg-eth0\:1
  • 然后编辑ifcfg-eth0:1这个配置文件,内容如下,一定要注意DEVICE这里要写成”eth0:1”

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # cat ifcfg-eth0\:1
    DEVICE=eth0:1
    HWADDR=00:0C:29:D9:F0:52
    TYPE=Ethernet
    UUID=a5442526-0329-421d-86cf-8d7f16d01374
    ONBOOT=yes
    BOOTPROTO=none
    IPADDR=192.168.80.5
    NETMASK=255.255.255.0
    GATEWAY=192.168.80.2
    NM_CONTROLLED=yes
  • 其实就是改一下 NAME、DEVICE、IPADDR这几处

  • 编辑好后,重启网卡:ifdown eth0 && ifup eth0
  • 之后再查看网卡ip检查是否设置成功:ifconfig,可以看到多了一个ifcfg-eth0:1

3.5. 永久更改主机名

当装完系统后,默认的主机名为localhost,使用hostname命令就可以知道您的linux主机名是什么:

1
2
# hostname
localhost.localdomain

同样可以使用hostname命令可以更改主机名(这种更改方式只是这次登陆有效,重启后还会恢复原样):

1
2
3
# hostname theshu
# hostname
theshu

若是想永久更改主机名,则需要修改相关的配置文件/etc/hostname,其修改内容如下:

1
2
# vim /etc/hostname
theshu

或是修改相关配置文件/etc/sysconfig/network,修改内容如下:

1
2
3
# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Aming.localdomain

在CentOS7中,还有一种更改主机名的方法,这中方法会自动更改文件内容,如下所示:

1
2
3
4
5
[root@theshuhost ~]# hostnamectl set-hostname theshu
[root@theshuhost ~]# hostname
theshu
[root@theshuhost ~]# cat /etc/hostname
theshu

3.2. 常用的几个操作

- 单网卡的关闭与启动

  • 关闭:ifconfig eth0 down
  • 启动:ifconfig eth0 up

- 查看路由表

  • route -n

- 禁止PING

实现方法如下:

  • 临时

    1
    echo 1 > /pro/sys/net/ipv4/icmp_echo_ignore_all
  • 永久

    1
    2
    修改 /etc/sysctl.conf 这个文件,添加如下一行:
    net.ipv4.icmp_echo_ignore_all = 1

- 开启转发

实现方法如下:

  • 临时

    1
    echo 1 > /proc/sys/net/ipv4/ip_forward
  • 永久

    1
    2
    修改 /etc/sysctl.conf 这个文件,添加如下一行:
    net.ipv4.ip_forward = 1

- 查看端口

查看服务器上开启了哪些端口:

1
netstat -antp

相关工具:nmap

3.3. DNS的配置文件

DNS是用来解析域名用的,平时我们访问网站都是直接输入一个网址,而DNS把这个网址解析到一个IP。

在Linux下设置DNS非常简单,只要把DNS地址写到一个配置文件中即可。这个配置文件就是/etc/resolv.conf。

- /etc/resolv.conf

DNS(NameServer)配置文件是 /etc/resolv.conf。

  1. 该文件的内容如下(一个示例):

    1
    2
    3
    ; generated by sbin/dhclient-script
    nameserver 8.8.8.8
    nameserver 220.181.137.37
  2. 如果我们是dhcp自动获取的IP,那么它会自动在/etc/resolv.conf里获取dns的ip,如果我们手动编辑该配置文件,那么重启网络服务后还会自动还原,因为我们打开了dhclient的服务,所以为了不让它受dhclient的影响,我们需要杀死dhclient:killall dhclient,同样也需要杀死NetworkManager进程;

  3. 默认需要我们在网卡配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0)重定义DNS服务器的IP,但如果在网卡配置文件中加上 PEERDNS=no 后,则该配置文件中的DNS1= 语句失效。

关于配置文件/etc/resolv.conf的说明:

  • resolv.conf有它固有的格式,一定要写成nameserver IP的格式。
  • 上面那行以”;”开头的是注释。
  • 建议写两个或多个nameserver,默认会用第一个nameserver去解析域名,当第一个解析不到时会使用第二个,以此类推。

在Linux下面有一个特殊的文件/etc/hosts也能解析域名,如下。

- /etc/hosts

/etc/hosts 文件是一个简易的DNS服务器,在该文件中添加IP和域名,即可在本地实现DNS的功能。不过需要我们手动在这里面添加”IP+域名”这些内容,它的作用是临时解析某个域名,非常有用。

示例如下:

1
2
3
4
# vim /etc/hosts
127.0,0,1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.111 www.baidu.com

保存一下,再ping一下www.baidu.com就会到192.168.1.111了。

关于配置文件/etc/hosts的说明:

  • /etc/hosts 的格式很简单,没一行作为一条记录,分成两部分,第一部分是IP,第二部分是域名。
  • 关于/etc/hosts文件有几点需要注意:
    • 一个IP后面可以跟多个域名,可以是几十个,甚至上百个
    • 每行只能有一个IP,也就是说,一个域名不能对应多个IP
    • 如果有多行中出现相同的域名(前面IP不一样),会按最前面出现的记录来解析

OK

0%