一、让配置永久有效的办法:修改配置文件
与网卡相关(课配置网卡的IP,掩码,网关,DNS)
/etc/sysconfig/network-scripts/ifcfg-INTERFACE
字段解释:
TYPE #接口类型 常见Ethernet,Bridge BOOTPROTO #分配ip时候采用的协议,一般有dhcp或者static。设定为static的时候,还要提供IPADDR和NETMASK DNS1 #在这个文件里面,我们也可以指定dns服务器,局域网内一般是填网关的ip,可以定义3个。 NM_CONTROLED #是否由NetworkManager控制,Centos6上建议为no。 USERCTL #是否可由用户激活该设备,建议为no ONBOOT #是否开机启动 PEERDNS #如果BOOTPROTO为dhcp,是否允许dhcp服务器分配的dns服务器指向信息直接覆盖至/etc/resolv.conf
网卡命名机制
systemd对网络设备的命名方式 CentOS7
a.如果固件(Firmware)或BIOS为主板上集成的设备(即,板载设备),如eno1。如果不成立,则方案b备选生效。 #集成网卡 b.如果Firmware或BIOS为PCI-E扩展槽,如ens1。如果也不成立,则方案c备选生效。 #独立网卡 c.如果硬件接口的物理位置拓扑信息可用,如enp2s0。如果也不成立,则方案e备选生效。 #usb网卡 d.如果用户显式启动,也可根据MAC地址进行命名,如enx237a1dc56 #默认关闭 e.以上都不成立,传统命名方式,如eth0
延伸:通过配置文件来给网卡,配置多IP地址
配置文件:新建一个ifcfg-别名(注意:需要关闭NetworkManager)
如cp ifcfg-eth0 ifcfg-eth0:0
首先我们复制一份网卡的配置,用作修改。
接着使用vim删除一些不必要的信息,添加一行onparent=yes来表示设备附属于eno16777736
然后使用service network restart 来重启一下服务。
我们可以看见接口那里多了一个eno16777736:0,而且物理地址和eno16777736相同。
接着我们使用ping命令来尝试一个能不能使用端口连通外网
ping命令
-c #指定次数 -I #指定源ip
甚至ssh连上去再ping
不过需要注意的是给网卡拿多一个ip(ip别名)不支持dhcp自动获取,要手动指定静态ip。
2.路由相关的配置文件 (路由就是指路,告诉别人路怎么走)
/etc/sysconfig/network-scripts/route-INTERFACE (route-eth0) #默认不存在 两种定义路由的风格: 1. Target via GW #要访问Target的ip,就要走GW这个网关。 #按照格式来说的话就是,如果你的目标是Target,那么你的下一跳(via)就去找GW这个ip。 2.每三行定义一条路由 ADDRESS0=192.168.0.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.0.1 #这三行的意思是:想要与这个网段(ipAddress+Netmask)的ip通信的话,就要从指定的网关(GATEWAY)走 #所以就是每三条定义一个路由。
首先,我们使用route -n来查看当前的路由有哪些。
我们可以看见,
第一行表示,假如目标是外部网络(Destination 0.0.0.0),则走192.168.2.1这个网关(Gateway)。U表示启用,G是网关。
第二行表示,如果目的地是192.168.2.0/24的这个私有地址网段,则不需要网关。则可以进行内部通信。
3.dns服务器指定
/etc/resolv .conf #最多可以出现三次,不仅可以在这里配置,也可以在网卡那里单独指定DNS服务器 nameserver DNS_SERVER_IP1 nameserver DNS_SERVER_IP2 nameserver DNS_SERVER_IP3 resolv.conf的关键字主要有四个,分别是: nameserver #定义DNS服务器的IP地址 domain #定义本地域名 search #定义域名的搜索列表 sortlist #对返回的域名进行排序
因为网卡那里开启了PEERDNS,所以网卡启动的时候读取到的DNS服务器已经输入到这个文件中。
4.主机名相关
/etc/hostname
二、让配置即时(临时)生效的办法:使用命令管理
ip命令 #功能强大,可以用于替换ifconfig和nmcli
使用ip help来获得帮助。而且这个命令,可以省略输入,或者使用tab键来补全,所以忘记的时候,可以尽情地按tab键。
常用的子选项
link #管理网络设备的
常用组合
ip link set DEVICE [ up | down ]
需要注意的是,如果把ip别名设置为down的话,整个设备都会变成down。
ip link set eno16777736:0 down
那么eno16777736这个网卡也会down掉。
在练习使用ip命令的时候,推荐直接使用虚拟机,不要用xshell等工具连接。
因为使用ip link和ip addr flush等命令会经常断线。
addr #配置ip地址
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ] [ CONFFLAG-LIST ] ip addr del IFADDR dev STRING [mngtmpaddr] ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [up] ip addr {showdump|restore} 名词解释: #|表示多选一,[]表示可选选项 IFADDR := PREFIX | ADDR peer PREFIX [ broadcast ADDR ] [ anycast ADDR ] [ label STRING ] [ scope SCOPE-ID ] SCOPE-ID := [ host | link | global | NUMBER ] FLAG-LIST := [ FLAG-LIST ] FLAG FLAG := [ permanent | dynamic | secondary | primary | tentative | deprecated | dadfailed | temporary | CONFFLAG-LIST ] CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG CONFFLAG := [ home | nodad | mngtmpaddr | noprefixroute ] LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ] LFT := forever | SECONDS
常用组合:
1.给设备添加ip,并设置ip别名。
ipaddr add IP_ADDRESS dev DEVICE label IP_ALIAS ip别名可以通过ifconfig看到。
2.删除指定的ip
3.指定并查看特定状态的设备
ip addr show表示显示全部设备的ip地址,可以简写成ip a。
或者用选项来筛选,如上面这条命令则是表示显示第二子网,scope类型为global的ip。
scope 作用域(一般很少主动设置)
global #ip全局有效#ip在内核上,能相应外部的请求 link #仅配置的那个设备有相应#ip只在设备上,接受请求的网卡有这个ip才会响应,否则不会转发。 host #仅本机内部有有响应#ip只在本机通信中有用,就像被人ping不到我们的127.0.0.1一样
4.替换IP地址
5..清空所有ip
ip addr flush dev DEVICE
注意:连接了xshell做ip命令的练习的话,会经常断开很麻烦。
所以练习的时候还是不要用xshell,直接在虚拟机那里做试验。
route #配置路由
常用组合:
add TARGET via GW dev INTERFACE src SOURCE_IP #添加路由条目 add default via GW dev INTFACE #设置默认网关 1.添加默认路由。
这个案例中,我们可以看出只有两个私有地址地址的路由
Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736 #第一条是,访问192.168.0.0/24这个网段的ip,往eno16777736这个接口走。 #第二条是,访问192.168.2.0/24这个网段的ip,往eno16777736这个接口走。 所以访问外网地址的时候,我们便无处可走。 所以要添加一条路由,访问外网要怎么走。 #添加ip route add default via 192.168.2.1 dev eno16777736则是告诉大家: #如果不是访问上面两个私有网段的地址,则其余的都让192.168.2.1这个ip作为网关帮忙转发。
2.删除特定路由条目
三、查看网络状态的工具
网络状态查看
1.netstat,重要!
-n #num,不解析域名,显示为ip状态 -t #显示tcp相关的状态 -u #显示udp相关的状态 -l #listen,显示状态为监听的链接 -p #program,显示相关进程 -e #扩展格式 -r #raw socket,裸套接字 -a #显示监听状态和非监听状态
常用组合:
netstat -tnl #把以tcp协议传输且处于监听状态的端口,以ip形式输出。 netstat -unl #把以udp协议传输且处于监听状态的端口,以ip形式输出。
netstat -tan #输出tcp协议的端口状态 netstat -uan #输出udn协议的端口状态以上命令可查看已连接的终端ip及所访问的服务,但是netstat -tnl仅仅显示服务所开端口,不显示连接情况。-tan -uan不仅显示服务所开端口,并且显示已连接终端的ip及连接状态,可用来查看是否有异常ip连入服务器。
显示路由表
-r #显示路由表
-n #ip格式
2.ifconfig
-a #什么都不加,或者-a的时候,表示显示当前所有设备的ip,包括ip别名。 DEVICE IPADDRESS #为设备指定ip地址,立即生效。但重启网络之后还是按配置文件来。
重启网卡之后,ip别名还是取回网卡设置192.168.2.133这个ip。
3.nmcli (NetworkManager的rpm安装而来)
如果关了NetworkManager服务的话,是不能用的。
这个命令有一个很有趣的地方,就是子命令可以省略输入
而且我们可以看到,这个device子命令,显示的是实体的设备。
之前配置的eno16777736:0的IP别名,在这里只会显示成设备的一个ip。
这点与ifconfig的不一样。
4.hostnamectl,hostname查看主机名或获得本机的IP
原创文章,作者:菠菜,如若转载,请注明出处:http://www.178linux.com/13528