网络设定 (手动设定与 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 showNAME UUID TYPE DEVICEeth0 505a7445-2aac-45c8-92df-dc10317cec22 802-3-ethernet eth0# NAME 就是联机代号,通常与后面的网卡DEVICE会一样# UUID 这个是特殊的装置识别,保留就好# TYPE 就是网卡的类型,通常是以太网卡# DEVICE 当然就是网卡名称啰!# 从上面我们会知道有个 eth0 的联机代号,那么来查察这个联机代号的设定为何?[root@study ~]# nmcli connection show eth0connection.id: eth0connection.uuid: 505a7445-2aac-45c8-92df-dc10317cec22connection.interface-name: eth0connection.type: 802-3-ethernetconnection.autoconnect: yes.....(中間省略).....ipv4.method: manualipv4.dns:ipv4.dns-search:ipv4.addresses: 192.168.1.100/24ipv4.gateway: --.....(中間省略).....IP4.ADDRESS[1]: 192.168.1.100/24IP4.GATEWAY:IP6.ADDRESS[1]: fe80::5054:ff:fedf:e174/64IP6.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/16IP4.GATEWAY: 172.16.200.254IP4.DNS[1]: 172.16.200.254IP6.ADDRESS[1]: fe80::5054:ff:fedf:e174/64IP6.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 eth0IP4.ADDRESS[1]: 172.16.2.76/16IP4.ADDRESS[2]: 172.16.1.1/16IP4.GATEWAY: 172.16.200.254IP4.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/hostnamewww.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: noNTP synchronized: no RTC in local TZ: no DST active: n/a# 2. 显示出是否有 New_York 时区?若有,则请将目前的时区更新一下[root@study ~]# timedatectl list-timezones | grep -i new America/New_YorkAmerica/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.tw1 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 ~]# localeLANG=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 所输出的系统语系喔!