详解Linux 主机网络接入配置
详解Linux主机网络接入配置
前言:
网络配置是我们在安装好操作系统之后,需要解决的第一步。现时代没有接入网络的主机已然等同于一堆废铁。在网络配置的过程中,通常我们需要配置本机IP地址,缺省网关,DNS,主机名等等。本文主要描述在Linux环境下,主要以传统命令行方式讲解如何将主机接入网络。对于网路配置的新命令如ip,nmcli等等在以后的文章中描述。
一、网络配置概述
主机接入互联网前提:遵循TCP/IP协议栈
配置主机接入TCP/IP网络需要配置的内容:
IP/Netmask
路由:
主机路由:一台主机
网络路由:是一个网络
默认路由(缺省网关):
DNS服务器:
主DNS服务器
备用DNS服务器
主机名:computer_name.domain.com
网络设备表示方法(CentOS7版本)
内核识别设备:驱动
网卡命名机制
CentOS7中,systemd对网络设备的命名方式
(a)如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
(b)如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
(c)如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
(d)如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56;
(e)上述均不可用时,则使用传统命名机制,基于BIOS支持biosdevname中
(f)本地回环lo
内置网卡:em1,em2
pci卡:pYpXY:slot,X:port
名称组成格式
en:Ethernet有线局域网
wl:wlan无线局域网
ww:wwan无线广域网
名称类型:
o:集成设备的设备索引号
s:扩展槽的索引号
x:基于MAC地址的命名
ps:enp2s1
二、IP地址配置
动态配置(IP/Netmask):
DHCP服务器(DynamicHostConfigurationProtocol)
静态指定:
用户空间工具(ifconfig,ip命令),立即生效,但不会长久有效(地址配置在内核,显示在用户空间)
网络设备服务配置文件,完成长久有效配置:
/etc/sysconfig/network-script/ifcfg-eth0
GUI/TUI配置工具
网路配置命令
ifconfig(传统配置命令)
ifconfig:显示所有活动状态的相关信息
ifconfigInterface:仅显示指定接口的相关信息
ifconfigInterfaceAddress
ip/mask
长格式:
ifconfigInterfaceIPnetmaskMASK
CIDR:无类别的预见路由
ifconfigInterfaceIP/MASK
ifconfig示例
#more/etc/redhat-release###当前环境 CentOSLinuxrelease7.2.1511(Core) #ifconfig|grepeno-A1###当前服务器有2块网卡,分别为eno16777728,eno33554960 eno16777728:flags=4163mtu1500 inet172.24.8.131netmask255.255.255.0broadcast172.24.8.255 -- eno33554960:flags=4163 mtu1500 inet192.168.81.144netmask255.255.255.0broadcast192.168.81.255 #ifconfigeno33554960192.168.81.145/24 #ifconfigeno33554960|head-2 eno33554960:flags=4163 mtu1500 inet192.168.81.145netmask255.255.255.0broadcast192.168.81.255 #ifconfigeno33554960down###禁用当前网卡 #ifconfigeno33554960up###激活当前网卡 #ifconfigeno33554960|head-2###再次查看网卡,由于使用了DHCP,IP地址被分配为原地址 eno33554960:flags=4163 mtu1500 inet192.168.81.144netmask255.255.255.0broadcast192.168.81.255 网卡手工配置示例 #vi/etc/sysconfig/network-scripts/ifcfg-eno16777728 TYPE="Ethernet"//指定网络类型为以太网模式 BOOTPROTO="dhcp"//指定启动地址协议的获取方式(dhcp或bootp为自动获取,none DEFROUTE="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:645746311 IPV6_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服务器地址 #systemctlrestartnetwork.service//重启网络服务,使配置生效
三、路由配置
route(传统配置命令) route: route:显示路由信息(网关指的就是下一跳的地址,下一跳地址必须与本地主机位于同一网络) -n:使用数字格式显示,不反解地址到主机名 routeadd//添加路由 -hostHOST_IPgwNext[devDevice] -netNet_ADDR -net0.0.0.0目标地址为任意地址,即默认路由 routedel//删除路由 -hostHOST_IPgw下一跳 -netNet_ADDRgw下一跳 示例: #route #route KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface default192.168.81.20.0.0.0UG10000eno33554960 172.24.8.00.0.0.0255.255.255.0U10000eno16777728 192.168.81.00.0.0.0255.255.255.0U10000eno33554960 示例中对于目表为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目标 Thedestinationnetworkordestinationhost.目标网络或目标主机。 Gateway网关 Thegatewayaddressor'*'ifnoneset.网关地址,如果没有就显示星号。 Genmask网络掩码 Thenetmaskforthedestinationnet;'255.255.255.255'fora hostdestinationand'0.0.0.0'forthedefaultroute. Flags:总共有多个旗标,代表的意义如下: U(routeisup):该路由是启动的; H(targetisahost):目标是一部主机(IP)而非网域; G(usegateway):需要透过外部的主机(gateway)来转递封包; R(reinstateroutefordynamicrouting):使用动态路由时,恢复路由资讯的旗标; D(dynamicallyinstalledbydaemonorredirect):已经由服务或转port功能设定为动态路由 M(modifiedfromroutingdaemonorredirect):路由已经被修改了; !(rejectroute):这个路由将不会被接受(用来抵挡不安全的网域!) A(installedbyaddrconf) C(cacheentry) Metric距离、跳数。暂无用。 The'distance'tothetarget(usuallycountedinhops).Itis notusedbyrecentkernels,butmaybeneededbyroutingdae- mons. Ref不用管,恒为0。 Numberofreferencestothisroute.(NotusedintheLinuxker-nel.) Use该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量。 Countoflookupsfortheroute.Dependingontheuseof-Fand Iface从哪一个网络接口路由出去,如本例中的eno33554960 Interfacetowhichpacketsforthisroutewillbesent. 添加网络路由 当前本机IP地址为172.24.8.131 假定要到达目标地址为:192.168.10.0/24,下一跳为172.24.8.2则添加路由命令如下 #routeadd-net192.168.10.0/24gw172.24.8.2###此时为网络网关(路由) #route-n KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 0.0.0.0192.168.81.20.0.0.0UG10000eno33554960 172.24.8.00.0.0.0255.255.255.0U10000eno16777728 192.168.10.0172.24.8.2255.255.255.0UG000eno16777728 192.168.81.00.0.0.0255.255.255.0U10000eno33554960 可以看到上述多出了一条路由记录,目标网络为192.168.10.0 新添加的路由接口设备自动使用了eno16777728网卡,因为172.24.8.2与eno16777728IP为同一网段内 添加主机路由 假定要到达目标地址为:192.168.20.1,下一跳为:172.16.100.177 #routeadd-host192.168.20.1gw172.16.100.177 SIOCADDRT:Networkisunreachable#提示网络不可达,因为172.16.100.177不在当前两块网卡的任一网段内 下面修改下一跳地址为172.24.8.254再次尝试添加 #routeadd-host192.168.20.1gw172.24.8.254###此处无需指定隐码 #route-n###在下面的列表中Flags有一个H,表示此条为主机路由 KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 0.0.0.0192.168.81.20.0.0.0UG10000eno33554960 172.24.8.00.0.0.0255.255.255.0U10000eno16777728 192.168.10.0172.24.8.2255.255.255.0UG000eno16777728 192.168.20.1172.24.8.254255.255.255.255UGH000eno16777728 192.168.81.00.0.0.0255.255.255.0U10000eno33554960 路由表描述 对于请求到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进行路由,如访问百度则由此路由 #pingwww.baidu.com-c2 PINGwww.baidu.com(14.215.177.38)56(84)bytesofdata. 64bytesfrom14.215.177.38:icmp_seq=1ttl=128time=5.76ms 64bytesfrom14.215.177.38:icmp_seq=2ttl=128time=6.13ms 删除路由 假定需要删除默认路由 #routedel-net0.0.0.0netmask0.0.0.0###等价于routedeldefault #route|grep-idefault #pingwww.baidu.com###缺省路由被删除后,ping百度不可达 connect:Networkisunreachable 删除之前添加的网络路由和主机路由 #routedel-net192.168.10.0/24 #routedel-host192.168.20.1 #route-n KernelIProutingtable DestinationGatewayGenmaskFlagsMetricRefUseIface 172.24.8.00.0.0.0255.255.255.0U10000eno16777728 192.168.81.00.0.0.0255.255.255.0U10000eno33554960 添加缺省网关 #routeadddefaultgw192.168.81.2 #routeadd-net0.0.0.0gw192.168.81.2###与上一条命令等价 路由静态配置文件 /etc/sysconfig/network /etc/sysconfig/network-scripts/route-ethX|route-pppX 配置文件的格式1:每行一个要配置的路径条目 目标via下一跳 例子: 192.168.0.0/24via172.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 最多三个: nameserverDNS_SERVER_IP nameserver8.8.8.8 测试DNS解析 dig-tA域名//正解测试 dig-xIP//反解测试 查看当前主机DNS解析配置 #more/etc/resolv.conf #GeneratedbyNetworkManager searchlocaldomainexample.com nameserver192.168.81.2 nameserver172.24.8.1 #dig-tAwww.oracle.com ;<<>>DiG9.9.4-RedHat-9.9.4-29.el7<<>>-tAwww.oracle.com ;;globaloptions:+cmd ;;Gotanswer: ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:11680 ;;flags:qrrdra;QUERY:1,ANSWER:3,AUTHORITY:0,ADDITIONAL:0 ;;QUESTIONSECTION: ;www.oracle.com.INA ;;ANSWERSECTION: www.oracle.com.5INCNAMEds-www.oracle.com.edgekey.net. ds-www.oracle.com.edgekey.net.5INCNAMEe11582.dscx.akamaiedge.net. e11582.dscx.akamaiedge.net.5INA184.28.37.127 ;;Querytime:12msec ;;SERVER:192.168.81.2#53(192.168.81.2)//通过本地IP192.168.81.2递交外部DNS服务器解析 ;;WHEN:MonSep0421:14:31CST2017 ;;MSGSIZErcvd:128 #dig-x184.28.37.127 ;<<>>DiG9.9.4-RedHat-9.9.4-29.el7<<>>-x184.28.37.127 ;;globaloptions:+cmd ;;Gotanswer: ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:20357 ;;flags:qrrdra;QUERY:1,ANSWER:1,AUTHORITY:8,ADDITIONAL:9 ;;OPTPSEUDOSECTION: ;EDNS:version:0,flags:;MBZ:0005,udp:512 ;;QUESTIONSECTION: ;127.37.28.184.in-addr.arpa.INPTR ;;ANSWERSECTION: 127.37.28.184.in-addr.arpa.5INPTRa184-28-37-127.deploy.static.akamaitechnologies.com. ;;AUTHORITYSECTION: 28.184.in-addr.arpa.5INNSns5.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa.5INNSns1.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa.5INNSns7.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa.5INNSns3.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa.5INNSns4.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa.5INNSns8.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa.5INNSns2.reverse.deploy.akamaitechnologies.com. 28.184.in-addr.arpa.5INNSns6.reverse.deploy.akamaitechnologies.com. ;;ADDITIONALSECTION: ns1.reverse.deploy.akamaitechnologies.com.5INA96.7.50.32 ns2.reverse.deploy.akamaitechnologies.com.5INA2.16.40.32 ns3.reverse.deploy.akamaitechnologies.com.5INA23.74.25.32 ns4.reverse.deploy.akamaitechnologies.com.5INA95.100.168.32 ns5.reverse.deploy.akamaitechnologies.com.5INA95.100.173.32 ns6.reverse.deploy.akamaitechnologies.com.5INA23.61.199.32 ns7.reverse.deploy.akamaitechnologies.com.5INA184.26.161.32 ns8.reverse.deploy.akamaitechnologies.com.5INA2.22.230.32 ;;Querytime:205msec ;;SERVER:192.168.81.2#53(192.168.81.2) ;;WHEN:MonSep0421:17:05CST2017 ;;MSGSIZErcvd:407
网络服务启动脚本
CentOS5/6: 服务脚本:/etc/init.d/network CentOS6 服务脚本:/etc/init.d/NetworkManager 服务脚本:SysVstyleLSB 控制运行在后台守护进程,接受参数{start|stop|restart|status} 脚本位置:/etc/rc.d/init.d或/etc/init.d 配置某服务开机自动启动:chkconfigSrc_Script_Nameon 禁止开机自动启动:chkconfigSrc_Script_Nameoff 查看chkconfig--list 调用机制: 1./etc/init.d/Script_Name{start|stop|restart|status} 1.serviceScript_Name{start|stop|restart|status} CentOS7 服务脚本:/etc/init.d/network #systemctlstartnetwork.service 如何实现在单网卡上配置多个地址(通常用于VIP) 通过网络接口别名来实现 eth0X eth0:Xeth0:0eth0:1.... 配置1: ifconfigethX:YIP/mask 配置2: ifcfg-ethX:Y DEVICE=ethX:Y BOOTPROTO={none|static} IPADDR= NETMASK= GATEWAY= 非主地址(别名地址)不支持DHCP协议获取
五、主机名配置
短主机名,如mycomputer1 长主机名(FQDN),如mycomputer.example.com CentOS5/6配置主机名 查看主机名: #hostname #more/etc/sysconfig/network #more/proc/sys/kernel/hostname 临时修改主机名: #hostnamenew_host_name #hostnamenew_host_name.domain.com 永久修改主机名(需要重启): #vi/etc/sysconfig/network 修改以及立即生效 #echonew_host_name>/proc/sys/kernel/hostname #sysctlkernel.hostname=new_host_name 示例 #more/etc/redhat-release CentOSrelease6.7(Final) #hostname node133 #hostnamehost133 #hostname host133 [root@host133~]#echohost133.example.com>/proc/sys/kernel/hostname [root@host133~]#hostname host133.example.com [root@host133~]#sysctlkernel.hostname=host133.example.com kernel.hostname=host133.example.com [root@host133~]#hostname host133.example.com CentOS7配置主机名 在RHEL7中,引入了静态(static)、瞬态(transient)和灵活(pretty)三种主机名。 “静态”主机名——也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。 “瞬态”主机名——是在系统运行时临时分配的主机名,例如,通过DHCP或DNS服务器分配。 静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。 “灵活”主机名——是允许使用自由形式(可包括特殊/空白字符)的主机名,以展示给终端用户(如Tom‘sComputer) 查看主机名的命令一般格式如下: hostnamectl[status][--static|--transient|--pretty] 选项说明如下: status——可同时查看静态、瞬态和灵活三种主机名及其相关的设置信息。 --static——仅查看静态(永久)主机名。 --transient——仅查看瞬态(临时)主机名。 --pretty——仅查看灵活主机名。 [root@centos7~]#hostnamectlstatus Statichostname:centos7.example.com Iconname:computer-vm Chassis:vm MachineID:8ef737feff1942798ec060bf5a162df6 BootID:e2c8eded07f04e879d2b160d9a6bc6cf Virtualization:vmware OperatingSystem:CentOSLinux7(Core) CPEOSName:cpe:/o:centos:centos:7 Kernel:Linux3.10.0-327.el7.x86_64 Architecture:x86-64 修改主机名的命令一般格式如下 #hostnamectl[--static|--transient|--pretty]set-hostname[root@centos7~]#hostnamectl--transient centos7.example.com #hostnamectl--transientset-hostnamecentos7-a//修改瞬态主机名 #hostnamectl//查看修改后的瞬态主机名 Statichostname:centos7.example.com Transienthostname:centos7-a #hostnamectl--static//查看修改前的静态主机名 centos7.example.com #hostnamectl--staticset-hostnamecentos7-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.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4 ::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6 192.168.81.142centos7-a.example.comcentos7-a//添加此行,其中192.168.81.142是本机IP地址 :wq//保存退出
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!