网络设定 (手动设定与 DHCP 自动取得)

网络其实是又可爱又麻烦的玩意儿,如果你是网络管理员,那么你必须要了解局域网络内的 IP, gateway, netmask 等参数,如果还想要连上 Internet ,那么就得要理解 DNS 代表的意义为何。如果 你的单位想要拥有自己的域名, 那么架设 DNS 服务器则是不可或缺的。

但鸟哥这里的网络介绍仅止于当你是一部单机的 Linux 客户端,而非服务器!所以你的各项网络参 数只要找到网络管理员, 或者是找到你的 ISP (Internet Service Provider) ,向他询问网络参数的取得 方式以及实际的网络参数即可。 通常网络参数的取得方式在常见的有底下这几种:

  • 手动设定固定 IP

常见于学术网络的服务器设定、公司行号内的特定座位等。这种方式你必须要取得底下的几个参 数才能够让你的 Linux 上网的:

  • IP

  • 子网掩码(netmask)

  • 通讯闸(gateway)

  • DNS 主机的 IP (通常会有两个,若记不住的话,硬背 168.95.1.1 即可)

  • 网络参数可自动取得 (dhcp 协议自动取得)

常见于 IP 分享器后端的主机,或者是利用电视线路的缆在线网 (cable modem),或者是学校宿舍的网络环境等。 这种网络参数取得方式就被称为 dhcp ,你啥事都不需要知道,只要知道设定上 网方式为 dhcp 即可。

  • 光纤到府与 ADSL 宽带拨接

不论你的 IP 是固定的还是每次拨接都不相同 (被称为浮动式 IP),只要是透过光纤到府或宽带调 制解调器『拨接上网』的,就是使用这种方式。 拨接上网虽然还是使用网络卡连接到调制解调器 上,不过,系统最终会产生一个替代调制解调器的网络接口 (ppp0) , 那个 ppp0 也是一个实体 网络接口啦!

了解了网络参数的取得方法后,你还得要知道一下我们透过啥硬件连上 Internet 的呢?其实就是网 络卡嘛。目前的主流网卡为使用以太网络协议所开发出来的以太网卡 (Ethernet),因此我们 Linux 就 称呼这种网络接口为 ethN (N 为数字)。 举例来说,这部测试机上面有一张以太网卡,因此这部主机的网络接口就是 eth0 啰 (第一张为 0 号开始)。

不过新的 CentOS 7 开始对于网卡的编号则有另一套规则,网卡的界面代号现在与网卡的来源有关~基本上的网卡名称会是这样分类的:

  • eno1 :代表由主板 BIOS 内建的网卡
  • ens1 :代表由主板 BIOS 内建的 PCI-E 界面的网卡
  • enp2s0 :代表 PCI-E 界面的独立网卡,可能有多个插孔,因此会有 s0, s1... 的编号~
  • eth0 :如果上述的名称都不适用,就回到原本的预设网卡编号

其实不管什么网卡名称啦!想要知道你有多少网卡,直接下达『 ifconfig -a 』全部列出来即可!此 外,CentOS 7 也希望我们不要手动修改配置文件, 直接使用所谓的 nmcli 这个指令来设定网络参 数即可


  • 手动设定 IP 网络参数

假设你已经向你的 ISP 取得你的网络参数,基本上的网络参数需要这些数据的:

  • method: manual (手动设定)
  • IP: 172.16.1.1
  • netmask: 255.255.0.0
  • gateway: 172.16.200.254
  • DNS: 172.16.200.254
  • hostname: study.centos.vbird

上面的数据除了 hostname 是可以暂时不理会的之外,如果你要上网,就得要有上面的这些数据才行 啊!然后透过 nmcli 来处理! 你得要先知道的是,nmcli 是透过一个名为『联机代号』的名称来设 定是否要上网,而每个『联机代号』会有个『网卡代号』, 这两个东西通常设定成相同就是了。那 就来先查查看目前系统上默认有什么联机代号吧!

[root@study ~]# nmcli connection show [网卡代号]
[root@study ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 505a7445-2aac-45c8-92df-dc10317cec22 802-3-ethernet eth0
# NAME 就是联机代号,通常与后面的网卡DEVICE会一样
# UUID 这个是特殊的装置识别,保留就好
# TYPE 就是网卡的类型,通常是以太网卡
# DEVICE 当然就是网卡名称啰!
# 从上面我们会知道有个 eth0 的联机代号,那么来查察这个联机代号的设定为何?

[root@study ~]# nmcli connection show eth0
connection.id:                          eth0
connection.uuid:                        505a7445-2aac-45c8-92df-dc10317cec22
connection.interface-name:              eth0
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
.....(中間省略).....
ipv4.method:                            manual
ipv4.dns:
ipv4.dns-search:
ipv4.addresses:                         192.168.1.100/24
ipv4.gateway:                           --
.....(中間省略).....
IP4.ADDRESS[1]:                         192.168.1.100/24
IP4.GATEWAY:
IP6.ADDRESS[1]:                         fe80::5054:ff:fedf:e174/64
IP6.GATEWAY:

如上表的输出,最底下的大写的 IP4, IP6 指的是目前的实际使用的网络参数,最上面的 connection 开头的部份则指的是联机的状态! 比较重要的参数鸟哥将它列出来如下:

  • connection.autoconnect [yes|no] :是否于开机时启动这个联机,预设通常是 yes 才对!
  • ipv4.method [auto|manual] :自动还是手动设定网络参数的意思
  • ipv4.dns [dns_server_ip] :就是填写 DNS 的 IP 地址~
  • ipv4.addresses [IP/Netmask] :就是 IP 与 netmask 的集合,中间用斜线 / 来隔开~
  • ipv4.gateway [gw_ip] :就是 gateway 的 IP 地址!

所以,根据上面的设定项目,我们来将网络参数设定好吧!


[root@study ~]# nmcli connection modify eth0 \
>  connection.autoconnect yes \
>  ipv4.method manual \
>  ipv4.addresses 172.16.1.1/16 \
>  ipv4.gateway 172.16.200.254 \
>  ipv4.dns 172.16.200.254
# 上面只是『修改了配置文件』而已,要实际生效还得要启动 (up) 这个 eth0 联机界面才行喔!

[root@study ~]# nmcli connection up eth0
[root@study ~]# nmcli connection show eth0
.....(前面省略).....
IP4.ADDRESS[1]:                         172.16.1.1/16
IP4.GATEWAY:                            172.16.200.254
IP4.DNS[1]:                             172.16.200.254
IP6.ADDRESS[1]:                         fe80::5054:ff:fedf:e174/64
IP6.GATEWAY:

最终执行『 nmcli connection show eth0 』然后看最下方,是否为正确的设定值呢?如果是的话,那 就万事 OK 啦!


  • 自动取得 IP 参数

如果你的网络是由自动取得的 DHCP 协议所分配的,那就太棒了!上述的所有功能你通通不需要 背~只需要知道 ipv4.method 那个项目填成 auto 即可!

[root@study ~]# nmcli connection modify eth0 \
> connection.autoconnect yes \
> ipv4.method auto

[root@study ~]# nmcli connection up eth0
[root@study ~]# nmcli connection show eth0
IP4.ADDRESS[1]:                         172.16.2.76/16
IP4.ADDRESS[2]:                         172.16.1.1/16
IP4.GATEWAY:                            172.16.200.254
IP4.DNS[1]:                             172.16.200.254

  • 修改主机名

主机名的修改就得要透过 hostnamectl 这个指令来处理了!

[root@study ~]# hostnamectl [set-hostname 你的主机名]

# 1. 显示目前的主机名与相关信息
[root@study ~]# hostnamectl
   Static hostname: study.centos.vbird                # 这就是主机名
         Icon name: computer
           Chassis: n/a
        Machine ID: 309eb890d09f440681f596543d95ec7a
           Boot ID: b2de392ff1f74e568829c716a7166ecd
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)             # 操作系统名称!
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-229.el7.x86_64      # 核心版本也提供!
      Architecture: x86_64                            # 硬件等级也提供!

# 2. 尝试修改主机名为 www.centos.vbird 之后再改回来~
[root@study ~]# hostnamectl set-hostname www.centos.vbird 
[root@study ~]# cat /etc/hostname
www.centos.vbird

[root@study ~]# hostnamectl set-hostname study.centos.vbird

日期与时间设定

  • 时区的显示与设定

怎么知道目前的时区设定是正确的呢? 就透过 timedatectl 这个指令吧!

[root@study ~]# timedatectl [commamd]
选项与参数:
list-timezones :列出系统上所有支持的时区名称
set-timezone :设定时区位置
set-time :设定时间
set-ntp :设定网络校时系统

# 1. 显示目前的时区与时间等信息
[root@study ~]# timedatectl
      Local time: Tue 2015-09-01 19:50:09 CST  # 本地时间
  Universal time: Tue 2015-09-01 11:50:09 UTC  # UTC 时间,可称为格林威治标准时间
        RTC time: Tue 2015-09-01 11:50:12
        Timezone: Asia/Taipei (CST, +0800)     # 就是时区啰!!
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

# 2. 显示出是否有 New_York 时区?若有,则请将目前的时区更新一下
[root@study ~]# timedatectl list-timezones | grep -i new 
America/New_York
America/North_Dakota/New_Salem

[root@study ~]# timedatectl set-timezone "America/New_York"
[root@study ~]# timedatectl
      Local time: Tue 2015-09-01 07:53:24 EDT
  Universal time: Tue 2015-09-01 11:53:24 UTC
        RTC time: Tue 2015-09-01 11:53:28
        Timezone: America/New_York (EDT, -0400)

[root@study ~]# timedatectl set-timezone "Asia/Taipei"
# 最后还是要记得改回来台湾时区喔!不要忘记了!

  • 时间的调整

由于测试机使用的是虚拟机,预设虚拟机使用的是 UTC 时间而不是本地时间,所以在预设的 情况下,测试机每次开机都会快上 8 小时... 所以就需要来调整一下时间啰!时间的格式可以是
『 yyyy-mm-dd HH:MM 』的格式!比较方便记忆喔!

# 1. 将时间调整到正确的时间点上!
[root@study ~]# timedatectl set-time "2015-09-01 12:02"

过去我们使用 date 去修改日期后,还得要使用 hwclock 去订正 BIOS 记录的时间~现在透过 timedatectl 一口气帮我们全部搞定,方便又轻松!


  • 用 ntpdate 手动网络校时

那如何手动网络校时呢?很简单,透过 ntpdate 这个指令即可!

[root@study ~]# ntpdate tock.stdtime.gov.tw
1 Sep 13:15:16 ntpdate[21171]: step time server 211.22.103.157 offset -0.794360 sec

[root@study ~]# hwclock -w

语系设定

LANG 与 locale 的指令能够查询目前的语系数据与变量,也知道 /etc/locale.conf 其实就是语系的配置文件。 此外,你还得要知道的是,系统的语系与你目前软件的 语系数据可能是可以不一样的!如果想要知道目前『系统语系』的话, 除了呼叫配置文件之外,也能够使用 localectl 来查阅:

[root@study ~]# localectl
   System Locale: LANG=zh_TW.utf8             # 底下这些数据就是『系统语系』
                  LC_NUMERIC=zh_TW.UTF-8
                  LC_TIME=zh_TW.UTF-8
                  LC_MONETARY=zh_TW.UTF-8
                  LC_PAPER=zh_TW.UTF-8
                  LC_MEASUREMENT=zh_TW.UTF-8
       VC Keymap: cn
      X11 Layout: cn
     X11 Options: grp:ctrl_shift_toggle

[root@study ~]# locale
LANG=zh_TW.utf8            # 底下的则是『当前这个软件的语系』数据!
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
.....(中間省略).....
LC_ALL=en_US.utf8

从上面的两个指令结果你会发现到,系统的语系其实是中文的万国码 (zh_TW.UTF8) 这个语系。不 过鸟哥为了目前的教学文件制作, 需要取消中文的显示,而以较为单纯的英文语系来处理~因此使 用 locale 指令时,就可以发现『鸟哥的 bash 使用的语系环境为 en_US.utf8』这一个! 我们知道直 接输入的 locale 查询到的语系,就是目前这个 bash 默认显示的语言,那你应该会觉得怪,那系统 语系 (localectl) 显示的语系用在哪?

其实一登入系统时,取得的语系确实是 zh_TW.utf8 这一个的,只是透过『 export LC_ALL=en_US.utf8 』来切换为英文语系而已。 此外,如果你有启用图形界面登入的话,那么默认 的显示语系也是透过这个 localectl 所输出的系统语系喔!

posted on 2017-11-03 14:19  uetucci  阅读(198)  评论(0编辑  收藏  举报