Linux系统几个跟网络相关的文件和命令
提醒:本文为合集文章,后续持续更新!
关注我持续进步!
其实,Linux的网络知识挺多的,阿铭在本节只把常用的一些技能教给大家。比如,如何设置IP、如何设置主机名、如何设置DNS等。
14。3。1用ifconfig命令查看网卡IP
前面阿铭曾用过ipaddr这个命令来查看系统的IP地址。其实在CentOS7之前,我们使用最多的命令是ifconfig,它类似于Windows的ipconfig命令,后面不加任何选项和参数时,只打印当前网卡IP的相关信息(如子网掩码、网关等)。在Windows下设置IP非常简单,然而在命令窗口下如何设置呢?这就需要修改配置文件etcsysconfignetworkscriptsifcfgxxx了,这里的xxx指的是网卡的名字,可以使用ipaddr命令查看所有网卡。如果你的系统里没有ifconfig命令,可以使用yuminstallynettools安装。
如果Linux上有多个网卡,而你只想重启某一个网卡的话,可以使用如下命令:ifdownens33;ifupens33
ifdown即停用网卡,ifup即启动网卡。需要大家注意的是,如果我们远程登录服务器,当使用命令ifdownens33时,很有可能后面的命令ifupens33不会运行。这样会导致我们断网而无法连接服务器,所以请尽量使用命令systemctlrestartnetwork来重启网卡。或者使用nmcli也可以实现同样的效果:nmclicdownens33;nmclicupens33
14。3。2给一个网卡设定多个IP
在Linux系统中,网卡是可以设定多重IP的,阿铭就曾经为一台服务器的网卡设定了5个IP。多重IP的设置过程如下:cdetcsysconfignetworkscriptscpifcfgens33ifcfgens33:1
然后编辑ifcfgens33:1这个配置文件。一定要注意DEVICE要写成ens33:1,如下所示:viifcfgens33:1编辑为类似如下内容TYPEEthernetPROXYMETHODnoneBROWSERONLYnoBOOTPROTOstaticDEFROUTEyesIPV4FAILUREFATALnoIPV6INITyesIPV6AUTOCONFyesIPV6DEFROUTEyesIPV6FAILUREFATALnoIPV6ADDRGENMODEstableprivacyNAMEens33:1UUID0f632d9ef3a140f981163340e2db6074DEVICEens33:1ONBOOTyesIPADDR192。168。72。129NETMASK255。255。255。0
其实就是改一下NAME、DEVICE、IPADDR,另外DNS1和GATEWAY可以删除,设置完毕重启网卡,如下所示:ifdownens33ifupens33
之后再查看网卡IP,如下所示:ifconfigens33:flags4163UP,BROADCAST,RUNNING,MULTICASTmtu1500inet192。168。72。128netmask255。255。255。0broadcast192。168。72。255inet6fe80::454b:a2e5:64e5:67a3prefixlen64scopeid0x20linkether00:0c:29:15:7f:b9txqueuelen1000(Ethernet)RXpackets66415bytes76169910(72。6MiB)RXerrors0dropped0overruns0frame0TXpackets15584bytes2655575(2。5MiB)TXerrors0dropped0overruns0carrier0collisions0ens33:1:flags4163UP,BROADCAST,RUNNING,MULTICASTmtu1500inet192。168。72。129netmask255。255。255。0broadcast192。168。72。255ether00:0c:29:15:7f:b9txqueuelen1000(Ethernet)
从上面可以看到,多了一个ens33:1。
14。3。3查看网卡连接状态
示例命令如下:miitoolens33ens33:negotiated1000baseTFDflowcontrol,linkok
这里显示linkok,就说明网卡为连接状态。如果显示nolink,说明网卡坏了或者没有连接网线。还有一个命令也可以查看网卡的状态,如下:ethtoolens33Settingsforens33:Supportedports:〔TP〕Supportedlinkmodes:10baseTHalf10baseTFull100baseTHalf100baseTFull1000baseTFullSupportedpauseframeuse:NoSupportsautonegotiation:YesSupportedFECmodes:NotreportedAdvertisedlinkmodes:10baseTHalf10baseTFull100baseTHalf100baseTFull1000baseTFullAdvertisedpauseframeuse:NoAdvertisedautonegotiation:YesAdvertisedFECmodes:NotreportedSpeed:1000MbsDuplex:FullPort:TwistedPairPHYAD:0Transceiver:internalAutonegotiation:onMDIX:off(auto)SupportsWakeon:dWakeon:dCurrentmessagelevel:0x00000007(7)drvprobelinkLinkdetected:yes
如果网卡没有连接,最后面一行Linkdetected显示为no。
14。3。4更改主机名
在第3章的时候,阿铭已经介绍过如何更改主机名。安装完系统后,主机名默认为localhost。localdomain,使用hostname命令就可以查看Linux的主机名,如下所示:hostnamelocalhost。localdomain
使用hostname命令也可以更改主机名,如下所示:hostnameAminghostnameAming
下次登录时,命令提示符〔rootlocalhost〕中的localhost就会更改成Aming。不过这样修改只是保存在内存中,如果重启,主机名还会变成改动之前的名称。所以更改主机名的同时还需要更改相关的配置文件etchostname。下面阿铭再介绍一种更改主机名的方法,这种方法会自动更改文件内容,如下所示:hostnamectlsethostnameaminglinux123hostnameaminglinux123catetchostnameaminglinux123
14。3。5设置DNS
DNS是用来解析域名的。平时我们访问网站都是直接输入一个网址,而DNS把这个网址解析到一个IP。关于DNS的概念,阿铭不再详细介绍,如果你感兴趣就去网上查一下。
在Linux下设置DNS非常简单,只要把DNS地址写到配置文件etcresolv。conf中即可。如下所示:catetcresolv。confGeneratedbyNetworkManagernameserver119。29。29。29
第一行以开头的行没有实际意义,仅仅是一个注释,它的意思是,这个配置文件中的DNSIP地址是由NetworkManager服务生成的。那么为什么这个DNS由它生成呢?你是否还有印象,我们在定义网卡配置文件的时候,就有一行DNS1119。29。29。29,其实就是因为这行配置,该配置文件里才有了nameserver的IP地址。resolv。conf有它固有的格式,一定要写成nameserverIP的格式。阿铭建议你写两个或多个namserver,系统默认会用第一个namserver去解析域名,当第一个解析不成功时会使用第二个。
说到这,你是否有疑惑:既然两个地方都可以定义DNS的IP地址,那么到底在哪里定义呢?阿铭给出的答案是:如果只是临时修改DNSIP地址,就直接修改etcresolv。如果是永久生效的话,还是要修改网卡的配置文件。
在Linux下还有一个特殊文件etchosts也能解析域名,不过需要我们在里面手动添加IP和域名这些内容。它的作用是临时解析某个域名,非常有用。该文件的内容如下:catetchosts127。0。0。1localhostlocalhost。localdomainlocalhost4localhost4。localdomain4::1localhostlocalhost。localdomainlocalhost6localhost6。localdomain6
请用Vim编辑该文件,增加一行192。168。72。1www。baidu。com,保存文件后再ping一下www。baidu。com就会连接到192。168。72。1了。如下所示:pingc2www。baidu。comPINGwww。baidu。com(192。168。72。1)56(84)bytesofdata。64bytesfromwww。baidu。com(192。168。72。1):icmpseq1ttl64time0。531ms64bytesfromwww。baidu。com(192。168。72。1):icmpseq2ttl64time0。392mswww。baidu。compingstatistics2packetstransmitted,2received,0packetloss,time54msrttminavgmaxmdev0。3920。4610。5310。072ms
etchosts的格式很简单,每一行为一条记录,分成两部分,第一部分是IP,第二部分是域名。关于hosts文件,有以下几点需要你注意:一个IP后面可以跟多个域名,可以是几十个甚至上百个;每一行只能有一个IP,也就是说一个域名不能对应多个IP;如果有多行中出现相同的域名(对应的IP不一样),会按最前面出现的记录来解析。