详解Linux 主机网络接入配置
前言:
网络配置是我们在安装好操作系统之后,需要解决的第一步。现时代没有接入网络的主机已然等同于一堆废铁。在网络配置的过程中,通常我们需要配置本机IP地址,缺省网关,DNS,主机名等等。本文主要描述在Linux环境下,主要以传统命令行方式讲解如何将主机接入网络。对于网路配置的新命令如ip,nmcli等等在以后的文章中描述。
一、网络配置概述
主机接入互联网前提:遵循TCP/IP协议栈
配置主机接入TCP/IP网络需要配置的内容:
IP/Netmask
路由:
主机路由:一台主机
网络路由:是一个网络
默认路由(缺省网关):
DNS服务器:
主DNS服务器
备用DNS服务器
主机名:computer_name.domain.com
网络设备表示方法(CentOS7版本)
内核识别设备:驱动
网卡命名机制
CentOS 7中,systemd对网络设备的命名方式
(a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
(b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
(d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56;
(e) 上述均不可用时,则使用传统命名机制,基于BIOS支持biosdevname中
(f) 本地回环 lo
内置网卡:em1,em2
pci卡:pYpX Y:slot ,X:port
名称组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
名称类型:
o: 集成设备的设备索引号
s: 扩展槽的索引号
x: 基于MAC地址的命名
ps: enp2s1
二、IP地址配置
动态配置(IP/Netmask):
DHCP服务器(Dynamic Host Configuration Protocol)
静态指定:
用户空间工具(ifconfig,ip命令),立即生效,但不会长久有效(地址配置在内核,显示在用户空间)
网络设备服务配置文件,完成长久有效配置:
/etc/sysconfig/network-script/ifcfg-eth0
GUI/TUI配置工具
网路配置命令
ifconfig(传统配置命令)
ifconfig:显示所有活动状态的相关信息
ifconfig Interface:仅显示指定接口的相关信息
ifconfig Interface Address
ip/mask
长格式:
ifconfig Interface IP netmask MASK
CIDR:无类别的预见路由
ifconfig Interface IP/MASK
ifconfig示例
# more /etc/redhat-release ###当前环境CentOS Linux release 7.2.1511 (Core) # ifconfig |grep eno -A1 ###当前服务器有2块网卡,分别为eno16777728,eno33554960eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.24.8.131 netmask 255.255.255.0 broadcast 172.24.8.255--eno33554960: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.81.144 netmask 255.255.255.0 broadcast 192.168.81.255# ifconfig eno33554960 192.168.81.145/24# ifconfig eno33554960|head -2eno33554960: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.81.145 netmask 255.255.255.0 broadcast 192.168.81.255 # ifconfig eno33554960 down ###禁用当前网卡# ifconfig eno33554960 up ###激活当前网卡# ifconfig eno33554960|head -2 ###再次查看网卡,由于使用了DHCP,IP地址被分配为原地址eno33554960: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.81.144 netmask 255.255.255.0 broadcast 192.168.81.255网卡手工配置示例# vi /etc/sysconfig/network-scripts/ifcfg-eno16777728 TYPE="Ethernet" //指定网络类型为以太网模式BOOTPROTO="dhcp" //指定启动地址协议的获取方式(dhcp或bootp为自动获取,noneDEFROUTE="yes" //是否把这个eno16777728设置为默认路由 PEERDNS="yes" //是否允许DHCP服务分配地址时直接更新/etc/resolv.conf中的DNS服务器地址PEERROUTES="yes"IPV4_FAILURE_FATAL="no" //如果IPv4配置失败,设备是否被禁用IPV6INIT="yes" //允许在该网卡上启动IPV6的功能 IPV6_AUTOCONF="yes" //是否使用IPV6地址的自动配置IPV6_DEFROUTE="yes" ### Author : Leshami IPV6_PEERDNS="yes" ### Blog : http://blog.csdn.net/leshami IPV6_PEERROUTES="yes" ### QQ/Weixin : 645746311IPV6_FAILURE_FATAL="no"NAME="eno16777728" //网络连接标识名 UUID="52ff246a-d965-4056-b34f-16e8f4df2c0a" //网卡全球通用唯一识别码DEVICE="eno16777728" //网络连接标识名ONBOOT="yes" //网卡开机后自动启动USERCTL=no //是否允许普通用户操作网卡PEERDNS={yes|no} //是否允许DHCP服务分配地址时直接更新/etc/resolv.conf中的DNS服务器地址# systemctl restart network.service //重启网络服务,使配置生效
三、路由配置
route(传统配置命令)route: route:显示路由信息(网关指的就是下一跳的地址,下一跳地址必须与本地主机位于同一网络) -n:使用数字格式显示,不反解地址到主机名 route add //添加路由 -host HOST_IP gw Next [dev Device] -net Net_ADDR -net 0.0.0.0 目标地址为任意地址,即默认路由 route del //删除路由 -host HOST_IP gw 下一跳 -net Net_ADDR gw 下一跳示例:# route # routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault 192.168.81.2 0.0.0.0 UG 100 0 0 eno33554960172.24.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777728192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554960示例中对于目表为192.168.81.0以及172.24.8.0网络段的访问,Gateway为4个0表示没有网络,也就是说属于直连网络,无需路由对于目标为default的(当使用route -n时,default为4个0)网络段时,通过缺省网关192.168.81.2连接目标指向单个主机的为主机路由,目标网络地址的为网络路由,目标指向所有地址(0.0.0.0或者default)的为默认路由。 route输出具体描述route命令输出的路由表字段含义如下: Destination 目标 The destination network or destination host. 目标网络或目标主机。 Gateway 网关 The gateway address or '*' if none set. 网关地址,如果没有就显示星号。 Genmask 网络掩码 The netmask for the destination net; '255.255.255.255' for a host destination and '0.0.0.0' for the default route. Flags:总共有多个旗标,代表的意义如下: U (route is up):该路由是启动的; H (target is a host):目标是一部主机 (IP) 而非网域; G (use gateway):需要透过外部的主机 (gateway) 来转递封包; R (reinstate route for dynamic routing):使用动态路由时,恢复路由资讯的旗标; D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由 M (modified from routing daemon or redirect):路由已经被修改了; ! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!) A (installed by addrconf) C (cache entry) Metric 距离、跳数。暂无用。 The 'distance' to the target (usually counted in hops). It is not used by recent kernels, but may be needed by routing dae- mons. Ref 不用管,恒为0。 Number of references to this route. (Not used in the Linux ker-nel.) Use 该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量。 Count of lookups for the route. Depending on the use of -F and Iface 从哪一个网络接口路由出去,如本例中的eno33554960 Interface to which packets for this route will be sent.添加网络路由 当前本机IP地址为172.24.8.131 假定要到达目标地址为:192.168.10.0/24,下一跳为 172.24.8.2 则添加路由命令如下 # route add -net 192.168.10.0/24 gw 172.24.8.2 ###此时为网络网关(路由) # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.81.2 0.0.0.0 UG 100 0 0 eno33554960 172.24.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777728 192.168.10.0 172.24.8.2 255.255.255.0 UG 0 0 0 eno16777728 192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554960 可以看到上述多出了一条路由记录,目标网络为192.168.10.0 新添加的路由接口设备自动使用了eno16777728网卡,因为172.24.8.2与eno16777728 IP为同一网段内添加主机路由 假定要到达目标地址为:192.168.20.1,下一跳为: 172.16.100.177 # route add -host 192.168.20.1 gw 172.16.100.177 SIOCADDRT: Network is unreachable #提示网络不可达,因为172.16.100.177不在当前两块网卡的任一网段内 下面修改下一跳地址为172.24.8.254再次尝试添加 # route add -host 192.168.20.1 gw 172.24.8.254 ###此处无需指定隐码 # route -n ###在下面的列表中Flags有一个H,表示此条为主机路由 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.81.2 0.0.0.0 UG 100 0 0 eno33554960 172.24.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777728 192.168.10.0 172.24.8.2 255.255.255.0 UG 0 0 0 eno16777728 192.168.20.1 172.24.8.254 255.255.255.255 UGH 0 0 0 eno16777728 192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554960 路由表描述 对于请求到192.168.10.0的网路,路由地址为172.24.8.2,经由网卡eno16777728 对于请求到192.168.20.1的主机,路由地址为172.24.8.254,经由网卡eno16777728 对于请求172.24.8.0以及192.168.81.0的网络,为直连网络,无需路由 对于请求到0.0.0.0的网络经由192.168.81.2从网卡eno33554960进行路由,如访问百度则由此路由 # ping www.baidu.com -c 2 PING www.baidu.com (14.215.177.38) 56(84) bytes of data. 64 bytes from 14.215.177.38: icmp_seq=1 ttl=128 time=5.76 ms 64 bytes from 14.215.177.38: icmp_seq=2 ttl=128 time=6.13 ms删除路由 假定需要删除默认路由 # route del -net 0.0.0.0 netmask 0.0.0.0 ###等价于 route del default # route |grep -i default # ping www.baidu.com ###缺省路由被删除后,ping百度不可达 connect: Network is unreachable 删除之前添加的网络路由和主机路由 # route del -net 192.168.10.0/24 # route del -host 192.168.20.1 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.24.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777728 192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554960添加缺省网关 # route add default gw 192.168.81.2 # route add -net 0.0.0.0 gw 192.168.81.2 ###与上一条命令等价路由静态配置文件 /etc/sysconfig/network /etc/sysconfig/network-scripts/route-ethX | route-pppX 配置文件的格式1:每行一个要配置的路径条目 目标 via 下一跳 例子: 192.168.0.0/24 via 172.16.100.177 配置文件的格式2:每一组一个路由条目 ADDRESS#=目标 NETMASK#=掩码 GATEWAY#=下一跳 ADDRESS0=192.168.0.0 NETMASK0=255.255.255.0 GATEWAY0=172.16.100.1
四、DNS配置
DNS服务器指向: 配置文件:/etc/resolv.conf 最多三个: nameserver DNS_SERVER_IP nameserver 8.8.8.8 测试DNS解析 dig -t A 域名 //正解测试 dig -x IP //反解测试查看当前主机DNS解析配置 # more /etc/resolv.conf # Generated by NetworkManager search localdomain example.com nameserver 192.168.81.2 nameserver 172.24.8.1 # dig -t A www.oracle.com ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.oracle.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11680 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.oracle.com. IN A ;; ANSWER SECTION: www.oracle.com. 5 IN CNAME ds-www.oracle.com.edgekey.net. ds-www.oracle.com.edgekey.net. 5 IN CNAME e11582.dscx.akamaiedge.net. e11582.dscx.akamaiedge.net. 5 IN A 184.28.37.127 ;; Query time: 12 msec ;; SERVER: 192.168.81.2#53(192.168.81.2) //通过本地IP 192.168.81.2递交外部DNS服务器解析 ;; WHEN: Mon Sep 04 21:14:31 CST 2017 ;; MSG SIZE rcvd: 128 # dig -x 184.28.37.127 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -x 184.28.37.127 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20357 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 8, ADDITIONAL: 9 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; MBZ: 0005 , udp: 512 ;; QUESTION SECTION: ;127.37.28.184.in-addr.arpa. IN PTR ;; ANSWER SECTION: 127.37.28.184.in-addr.arpa. 5 IN PTR a184-28-37-127.deploy.static.akamaitechnologies.com. ;; AUTHORITY SECTION: 28.184.in-addr.arpa. 5 IN NS ns5.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa. 5 IN NS ns1.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa. 5 IN NS ns7.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa. 5 IN NS ns3.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa. 5 IN NS ns4.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa. 5 IN NS ns8.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa. 5 IN NS ns2.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa. 5 IN NS ns6.reverse.deploy.akamaitechnologies.com. ;; ADDITIONAL SECTION: ns1.reverse.deploy.akamaitechnologies.com. 5 IN A 96.7.50.32 ns2.reverse.deploy.akamaitechnologies.com. 5 IN A 2.16.40.32 ns3.reverse.deploy.akamaitechnologies.com. 5 IN A 23.74.25.32 ns4.reverse.deploy.akamaitechnologies.com. 5 IN A 95.100.168.32 ns5.reverse.deploy.akamaitechnologies.com. 5 IN A 95.100.173.32 ns6.reverse.deploy.akamaitechnologies.com. 5 IN A 23.61.199.32 ns7.reverse.deploy.akamaitechnologies.com. 5 IN A 184.26.161.32 ns8.reverse.deploy.akamaitechnologies.com. 5 IN A 2.22.230.32 ;; Query time: 205 msec ;; SERVER: 192.168.81.2#53(192.168.81.2) ;; WHEN: Mon Sep 04 21:17:05 CST 2017 ;; MSG SIZE rcvd: 407
网络服务启动脚本
CentOS 5/6: 服务脚本:/etc/init.d/network CentOS 6 服务脚本:/etc/init.d/NetworkManager 服务脚本:SysV style LSB 控制运行在后台守护进程,接受参数{start|stop|restart|status} 脚本位置:/etc/rc.d/init.d或/etc/init.d 配置某服务开机自动启动:chkconfig Src_Script_Name on 禁止开机自动启动:chkconfig Src_Script_Name off 查看 chkconfig --list 调用机制: 1./etc/init.d/Script_Name {start|stop|restart|status} 1.service Script_Name {start|stop|restart|status} CentOS 7 服务脚本:/etc/init.d/network # systemctl start network.service如何实现在单网卡上配置多个地址(通常用于VIP) 通过网络接口别名来实现 eth0X eth0:X eth0:0 eth0:1.... 配置1: ifconfig ethX:Y IP/mask 配置2: ifcfg-ethX:Y DEVICE=ethX:Y BOOTPROTO={none|static} IPADDR= NETMASK= GATEWAY= 非主地址(别名地址)不支持DHCP协议获取
五、主机名配置
短主机名,如mycomputer1长主机名(FQDN),如mycomputer.example.comCentOS 5/6配置主机名 查看主机名: # hostname # more /etc/sysconfig/network # more /proc/sys/kernel/hostname 临时修改主机名: # hostname new_host_name # hostname new_host_name.domain.com 永久修改主机名(需要重启): # vi /etc/sysconfig/network 修改以及立即生效 # echo new_host_name >/proc/sys/kernel/hostname # sysctl kernel.hostname=new_host_name 示例 # more /etc/redhat-release CentOS release 6.7 (Final) # hostname node133 # hostname host133 # hostname host133 [root@host133 ~]# echo host133.example.com >/proc/sys/kernel/hostname [root@host133 ~]# hostname host133.example.com [root@host133 ~]# sysctl kernel.hostname=host133.example.com kernel.hostname = host133.example.com [root@host133 ~]# hostname host133.example.comCentOS 7 配置主机名 在RHEL7中,引入了静态(static)、瞬态(transient)和灵活(pretty)三种主机名。 “静态”主机名——也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。 “瞬态”主机名——是在系统运行时临时分配的主机名,例如,通过DHCP或DNS服务器分配。 静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。 “灵活”主机名——是允许使用自由形式(可包括特殊/空白字符)的主机名,以展示给终端用户(如Tom‘s Computer) 查看主机名的命令一般格式如下: hostnamectl [status] [--static|--transient|--pretty] 选项说明如下: status——可同时查看静态、瞬态和灵活三种主机名及其相关的设置信息。 --static——仅查看静态(永久)主机名。 --transient——仅查看瞬态(临时)主机名。 --pretty ——仅查看灵活主机名。 [root@centos7 ~]# hostnamectl status Static hostname: centos7.example.com Icon name: computer-vm Chassis: vm Machine ID: 8ef737feff1942798ec060bf5a162df6 Boot ID: e2c8eded07f04e879d2b160d9a6bc6cf Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.el7.x86_64 Architecture: x86-64 修改主机名的命令一般格式如下 # hostnamectl [--static|--transient|--pretty] set-hostname <new_hostname> [root@centos7 ~]# hostnamectl --transient centos7.example.com # hostnamectl --transient set-hostname centos7-a //修改瞬态主机名 # hostnamectl //查看修改后的瞬态主机名 Static hostname: centos7.example.com Transient hostname: centos7-a # hostnamectl --static //查看修改前的静态主机名 centos7.example.com # hostnamectl --static set-hostname centos7-a.example.com //修改静态主机名 # hostnamectl --static //查看修改后的瞬态主机名 centos7-a.example.com Hostnamectl设置主机名后,会立即刷新内核主机名,以及更新/etc/hostname文件, 但当前Bash提示符需重新登陆shell [root@centos7 ~]# bash //重新开启shell # /etc/hosts文件中主机名不会自动更新,应手动更新主机名与IP地址的映射关系 vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.81.142 centos7-a.example.com centos7-a //添加此行,其中192.168.81.142是本机IP地址 :wq //保存退出
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
新闻热点
疑难解答