首页 > 网络 > 其他 >

linux网络基础配置与网络进阶管理

2016-09-13

linux网络基础配置与网络进阶管理。真不敢想象没有网络的一天应该怎样度过,但是有了网络就行了?

一、 网络基本配置:

真不敢想象没有网络的一天应该怎样度过,但是有了网络就行了?原来刚有了网络时由于没有统一的标准,各大硬件厂商各自为政,都在搞网络,但是都只是同一厂商的设备可以进行通讯,就和不同的国家的人交流使用了不同的语言一样,难以将所有的网络连接起来,之后Internet有了统一的标准,大家都遵循它的标准,后来计算机才能进行网络通讯,同样将linux主机接入网络也必须进行配置它的网络,及其相关的主机名等,下面将逐一进行配置:

1. 主机名:

rhel6中主机名修改

[root@cnode6_8~]#cat/etc/sysconfig/network//配置文件存放地方,只需按照格式修改配置文件即可,修改后可以永久修改
NETWORKING=yes
HOSTNAME=cnode6_8.desktop
[root@cnode6_8~]#hostnamejack.desktop//当然也可以临时修改主机名
rhel7主机名修改:可以通过nmtui命令图形化设置主机名和网络设置
[root@centos7~]#hostnamectlset-hostnamecnode1.localdomain//使用命令修改主机名,该命令修改主机名永久生效!当然也可以直接修改配置文件。
[root@centos7~]#cat/etc/hostname//查看确实已经生效
cnode1.localdomain
2. ip/mask,路由,默认网关等使用过命令进行设置:
[root@cnode6_8~]#ifconfigeth2192.168.66.130netmask255.255.255.0broadcast192.168.66.255
[root@cnode6_8~]#ifconfig|grepeth2-A1
eth2Linkencap:EthernetHWaddr00:0C:29:C8:95:18
inetaddr:192.168.66.130Bcast:192.168.66.255Mask:255.255.255.0

注:在rhel6和rhel7中都可使用上面的命令进行修改,rhel6和rhel7中都可以使用network、NetworkManager两个服务进行对网络管理,但是在rhel6当中建议使用network服务rhel6中NetworkManager服务可能不太稳定,许多环境下会关闭该服务,比如在双网卡绑定,网卡别名等情况下。在rhel7当中推荐使用后者。原因是如果两个服务同时存在有可能修改配置文件不起作用,建议使用一个服务,另一个停掉,这样不会引起冲突。

3. DNS服务设置:

(可以配置多个DNS服务器。主次第三DNS服务器)两个版本的系统均在配置文件中配置即可,当然也可以使用命令如nmcli等。DNS对应的配置文件是 /etc/resolv.conf ,如果在网卡的配置文件当中PEERDNS配置的选项如果为yes,并且IP地址是自动获取,则按网卡的配置文件自动生成该文件,DNS解析时会首先查找/etc/hosts文件,如果该文件没有响应的记录,则会查找/etc/resolv.conf文件,当然可以修改配置文件/etc/nsswitch.conf 找到#hosts开头的下一行将hosts后面的两个参数调换顺序即可改变两者的优先级。

4. 网络配置文件:

在/etc/sysconfig/network-scripts 目录下,存放网络启动相关的配置信息,静态指定的方式除了上面的临时指定,还有通过文本图形化设置,也非常方便:

[root@cnode6_8network-scripts]#system-config-network//文本图形化配置命令

网卡配置文件文件如下:

[root@cnode6_8network-scripts]#catifcfg-eth0
DEVICE=eth0//物理网卡名,必须指定
TYPE=Ethernet//类型以太网
ONBOOT=yes//默认开机启动
NM_CONTROLLED=yes//是否受到NetworkManager管辖,在rhel6中建议no
BOOTPROTO=none//地址分配方式,dhcp,none,static
IPADDR=10.1.255.166//ipv4地址
NETMASK=255.255.0.0//子网掩码,使用PREFIX关键字指定也可以
USERCTL=no//普通用户是否能控制
IPV6INIT=no
PREFIX=16//网络前缀,可以使用NETMASK替代
GATEWAY=10.1.255.166//网关
DNS1=10.1.0.1//DNS可以指定多个,不同的用数字区分如DNS1
DEFROUTE=yes
PEERDNS=yes//如果地址分配方式为dhcp,是否允许将分配的dns服务器信息直接写入/etc/resolv.conf,本地解析文件在:/etc/hosts配置文件当中
IPV4_FAILURE_FATAL=yes
NAME="Systemeth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
HWADDR=00:0C:29:C8:95:0E
MACADDR=66:66:66:66:66:66//可以手动指定mac,在交换机看来就是MACADDR,通过wireshark抓包看到mac确实显示的是自己设定的

11.png

二、网卡别名(rhel6中):

可以将多个IP绑定到一个网卡上面网卡名字的DEVICE后面加冒号和相应的数字,可以自己定义,如eth0:1,在配置是注意在真实的物理网卡配置上可以配置dhcp,别名上面只能使用静态IP给主机添加IP,其他配置和一般的网卡配置一样,网卡别名可以用在如为多个vlan提供服务,因为多个vlan是属于不同的网络中,所以一台服务器可以为一块网卡配置多个ip,使它分属于不同的vlan。rhel7中可以在配置文件中使用索引的方式添加多个IP,也可以使用nmcli命令进行直接添加无需添加别名设置

[root@cnode6_8network-scripts]#cpifcfg-eth0ifcfg-eth0:1
[root@cnode6_8network-scripts]#vimifcfg-eth0:1
[root@cnode6_8network-scripts]#head-n1ifcfg-eth0:1
DEVICE=eth0:1
[root@cnode6_8network-scripts]#ifconfigeth0:2192.168.1.66/24up
[root@cnode6_8network-scripts]#ipa|grep192
inet192.168.1.66/24brd192.168.1.255scopeglobaleth0:2
三、 ip命令使用:

ip可以临时性管理ip地址,包括添加删除,添加别名:

ipaddradd172.16.1.2/16deveth0
ipaddradd172.16.1.1/16deveth0labeleth0:0
ipaddrdel172.16.1.1/16deveth0labeleth0:0
ipaddrflushdeveth0labeleth0:0

示例:

[root@cnode6_8network-scripts]#ipaddradd5.5.5.5/16deveth0
[root@cnode6_8network-scripts]#ipa|grep5.5.5
inet5.5.5.5/16scopeglobaleth0
[root@cnode6_8network-scripts]#ipaadd9.9.9.9/8deveth0labeleth0:0
[root@cnode6_8network-scripts]#ipa|grep9.9
inet9.9.9.9/8scopeglobaleth0:0
[root@cnode6_8network-scripts]#ipaflushdeveth0labeleth0:0
[root@cnode6_8network-scripts]#ipa|grep9.9
[root@cnode6_8network-scripts]#
四、 nmcli命令的使用

nmcli是一个控制和管理NetworkManager服务的命令行工具,nmcli可以实现报告网络状态,修改,删除编辑创建等操作,在NetworkManager管理思想中,网络设备是关联一个链接名的,通过链接的配置信息绑定至网卡等设备上,使得设备生效下面是它的使用方法和具体案例:

nmcli dev status :列出所有设备

nmcli dev dis 关闭硬件接口

nmcli con show :列出所有连接

nmcli con up :激活ID连接

nmcli con down 取消激活

nmcli dev dis 中断物理接口,并且暂时禁用自动连接

nmcli net off :禁用所有管理的接口

nmcli con add … :添加新连接

nmcli con mod 修改连接

nmcli con del 删除连接

nmcli con reload 重新加载配置

nm-connection-editor 图形化管理工具

nmtui 文本字符的图形化管理工具

注:此处的ID即为nmcli创建的链接名

示例:

Wiredconnection24d90f23b-614e-476c-9e9d-5e2e24ab04e2802-3-ethernet--
team03862c422-c585-47af-8c76-10c22fd90d2cteamteam0
virbr021a2bcd5-ff7f-4966-b21d-5eeef7cb3ac4bridgevirbr0
eno167777369cff9661-c26d-430e-bc78-59ae0a6d2e2d802-3-etherneteno16777736
eno16777736b508c047-1437-4063-ba18-153985c4733b802-3-ethernet--
Wiredconnection138a1b9c7-d6d0-40d4-b47e-52ad2a5e1426802-3-ethernet--

为物理接口添加一个类型为Ethernet,链接名为classlink,自动连接,具有如下ip和网关的连接

[root@c7node2network-scripts]#nmcliconaddtypeethernetcon-nameclasslink\
ifnameeno50332208autoconnectyesip410.1.255.7/16gw410.1.0.1
[root@c7node2network-scripts]#llifcfg-classlink\\已经生成文件
-rw-r--r--.1rootroot304Sep618:02ifcfg-classlink
[root@c7node1network-scripts]#systemctlrestartNetworkManager\\重启网络服务
[root@c7node1network-scripts]#ipa|grep-e"10.1.255.7"-e"eno5"\\配置生效
4:eno50332208:mtu1500qdiscpfifo_faststateUPqlen1000
inet10.1.255.7/16brd10.1.255.255scopeglobaleno50332208
[root@c7node1network-scripts]#nmcliconmodclasslink+ipv4.addresses\
10.1.255.77/16\\修改IP地址,可以使用[+|-|],表示新增或减少一个IP地址,没有符号就直接覆盖原来的配置文件中的IP地址
[root@c7node1network-scripts]#nmcliconnectionshowclasslink|grepIP4.ADD
IP4.ADDRESS[1]:10.1.255.7/16
IP4.ADDRESS[2]:10.1.255.77/16
[root@c7node1network-scripts]#nmcliconmodifyclasslink-ipv4.add"10.1.255.77/16"
[root@c7node1network-scripts]#nmcliconnectionshowclasslink|grepIP4.ADD
IP4.ADDRESS[1]:10.1.255.7/16
[root@c7node1~]#nmclicondownclasslink\\关闭物理接口
Connection'classlink'successfullydeactivated(D-Busactivepath:/org/freedesktop/NetworkManager/ActiveConnection/10)
[root@c7node1~]#nmcliconshow|grepclass\\查看状态,最后一栏没有物理口
classlink36e5c10e-83e0-4f79-9d37-2c6f4d8a79cb802-3-ethernet--
[root@c7node1~]#nmcliconupclasslink\\开启物理接口
Connectionsuccessfullyactivated(D-Busactivepath:/org/freedesktop/NetworkManager/ActiveConnection/11)
[root@c7node1~]#nmcliconshow|grepclass\\查看到链接对应有物理口
classlink36e5c10e-83e0-4f79-9d37-2c6f4d8a79cb802-3-etherneteno50332208

附:nmcli命令生成的配置文件中选项与配置文件对应项:

22.png

五、 几种常见的网卡绑定工作模式:

网卡绑定可以提高网络的冗余,保证网络可靠性,提高网络速度。拥有等许多单网卡没有的优势,在rhel6中该技术名字叫网卡绑定,到了rhel7当中,有了网络工作组的概念实质上原理相同。

1. mode 0 (round-robin)从头到尾的在每一个slave网卡上顺序发送数据包,该模式可以提供负载均衡和容错

2. mode1(active-backup)主备模式,在同一时间只有一个处于活动,为了防止交换机发生混乱此时绑定的mac地址只有一个外部端口可见

3. mode3(broadcast)广播策略在所有的slave接口上传送相同的报文,本模式提供容错能力

六、网卡绑定bonding(以bond0为例)与网络工作组配置:1. bonding配置步骤:

创建bonding设备的配置文件,然后添加需要绑定的物理设备

卸载bond时,删除相关配置文件,卸载bonding模块,首先使用lsmod找到bonding模块,然后使用rmmod 查到的模块名称(许多人更喜欢使用modprobe -r 模块名)来代替使用rmmod )

[root@cnode6_8network-scripts]#catifcfg-bond0
DEVICE=bond0//必须配置的设备名
BOOTPROTO=none
BONDING_OPTS="miimon=100mode=0"
IPADDR=10.1.255.252
PREFIX=16
GATEWAY=10.1.0.1
DNS1=8.8.8.8
DNS2=114.114.114.114
MACADDR=88:88:88:88:88:88//这个可以不写只是测试方便看到而已
ONBOOT=yes
[root@cnode6_8network-scripts]#catifcfg-eth1//另一块slave设备与此除了DEVICE不同其他相同
DEVICE=eth3
BOOTPROTO=none
MASTER=bond0//隶属与bond0
SLAVE=yes//隶属关系
USERCTL=no
[root@cnode6_8~]#cat/proc/net/bonding/bond0//查看bond设备状态
EthernetChannelBondingDriver:v3.7.1(April27,2011)

BondingMode:loadbalancing(round-robin)
MIIStatus:up
MIIPollingInterval(ms):200
UpDelay(ms):0
DownDelay(ms):0

SlaveInterface:eth3
MIIStatus:up
Speed:1000Mbps
Duplex:full
LinkFailureCount:0
PermanentHWaddr:00:0c:29:c8:95:0e
SlavequeueID:0

SlaveInterface:eth4
MIIStatus:up
Speed:1000Mbps
Duplex:full
LinkFailureCount:0
PermanentHWaddr:00:0c:29:c8:95:2c
SlavequeueID:0
[root@cnode6_8network-scripts]#ipa|grepbond0-A3//查看bond网卡配置信息
3:eth3:mtu1500qdiscpfifo_fastmasterbond0stateUPqlen1000
link/ether88:88:88:88:88:88brdff:ff:ff:ff:ff:ff
4:eth4:mtu1500qdiscpfifo_faststateDOWNqlen1000
link/ether00:0c:29:c8:95:22brdff:ff:ff:ff:ff:ff
5:bond0:mtu1500qdiscnoqueuestateUP
link/ether88:88:88:88:88:88brdff:ff:ff:ff:ff:ff
inet10.1.255.252/16brd10.1.255.255scopeglobalbond0
inet6fe80::8a88:88ff:fe88:8888/64scopelink
valid_lftforeverpreferred_lftforever

最后用wireshare可以抓到ping包的icmp包:

33.png

2. rhel7中网络工作组(Networking Teaming)配置:

网络工作组和旧版的bonding技术相比提供更好的性能和扩展性,由守护进程teamd和内核驱动实现:多种工作方式(runner):broadcast、roundrobin、activebackup、

loadbalance、lacp。其中除了activebackup这种方式外,其它都需要交换机支持,如交换机的端口聚合等技术否则无法实现响应的功能。需要注意的是:在启动网络组时不会启动网络组的物理分配的port接口,需要手动启动,启用物理接口时也不会启动网络组这种逻辑接口。但是禁用网络组接口,会禁用组中的物理port接口。

(1) 创建网络组:

nmcli con add type team con-name CNAME ifname

INAME [config JSON]

CNAME 连接名,INAME 接口名

JSON 指定runner 方式

格式:'{"runner": {"name": "METHOD"}}' # 两个冒号后面分别有一个空格

METHOD 可以是broadcast, roundrobin, activebackup, loadbalance, lacp.

(2) 创建port接口:

nmcli con add type team-slave con-name CNAME ifname INAME master TEAM

CNAME 连接名, INAME 网络接口名,TEAM 网络组

接口名.

连接名若不指定,默认为team-slave-IFACE .

nmcli dev dis INAME; nmcli con up CNAME

INAME 名 设备名 CNAME 网络组接口名或port

具体示例:

下面将创建一个逻辑设备名是team0,物理设备名也叫team0(因为team本来是一个逻辑设备,所以只好指定物理设备也是它啦!其实它是不存在的了),添加两块物理网卡,连接名为team0-port1,team0-port2 。物理网卡真实名字为eno50332208和eno33554984,并设定team的工作方式为activebackup,指定其ip地址dns网关,子网掩码等信息

[root@c7node2network-scripts]#nmcliconaddtypeteamcon-nameteam0ifnameteam0\
config'{"runner":{"name":"activebackup"}}'
Connection'team0'(7a11cf1f-9c4b-4cc0-adf0-88e5e000e861)successfullyadded.
[root@c7node2network-scripts]#nmcliconmodteam0ipv4.methodmanual\
ipv4.addresses'10.1.255.101/16'ipv4.gateway'10.1.0.1'ipv4.dns'114.114.114.114'
[root@c7node2network-scripts]#nmcliconaddtypeteam-slavecon-nameteam0-port1\
ifnameeno33554984masterteam0
Connection'team0-port1'(ee7edb65-ce6d-446c-be96-7f57be2ddbd7)successfullyadded.
[root@c7node2network-scripts]#nmcliconaddtypeteam-slavecon-nameteam0-port2\
ifnameeno50332208masterteam0
Connection'team0-port2'(80043681-91d9-4c1e-ba1f-e1229b3b02b0)successfullyadded.

使用nmcli命令生成的三个配置文件如下:也可以直接编辑配置文件重启服务使其生效

[root@c7node2network-scripts]#catifcfg-team0
DEVICE=team0
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"#此处配置文件”前面的\是转义作用防止中间的引号与最外面的”混淆
DEVICETYPE=Team
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=team0
UUID=7a11cf1f-9c4b-4cc0-adf0-88e5e000e861
ONBOOT=yes
DNS1=114.114.114.114
IPADDR=10.1.255.101
PREFIX=16
GATEWAY=10.1.0.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

[root@c7node2network-scripts]#catifcfg-team0-port1
NAME=team0-port1
UUID=ee7edb65-ce6d-446c-be96-7f57be2ddbd7
DEVICE=eno33554984
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort

[root@c7node2network-scripts]#catifcfg-team0-port2
NAME=team0-port2
UUID=80043681-91d9-4c1e-ba1f-e1229b3b02b0
DEVICE=eno50332208
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort
[root@c7node2network-scripts]#teamdctlteam0state
setup:
runner:activebackup
runner:
activeport:
#此时查看到的是team的接口是都没有up的状态,但是team0已经启动。
[root@c7node2network-scripts]#nmcliconupteam0-port1
Connectionsuccessfullyactivated(D-Busactivepath:/org/freedesktop/NetworkManager/ActiveConnection/8)
[root@c7node2network-scripts]#nmcliconupteam0-port2
Connectionsuccessfullyactivated(D-Busactivepath:/org/freedesktop/NetworkManager/ActiveConnection/9)
[root@c7node2network-scripts]#teamdctlteam0state
setup:
runner:activebackup
ports:
eno33554984
linkwatches:
linksummary:up
instance[link_watch_0]:
name:ethtool
link:up
downcount:0
eno50332208
linkwatches:
linksummary:up
instance[link_watch_0]:
name:ethtool
link:up
downcount:0
runner:
activeport:eno33554984
[root@c7node2network-scripts]#
[root@c7node2network-scripts]#ping-Iteam010.1.0.1#验证使用team0ping网关成功!
PING10.1.0.1(10.1.0.1)from10.1.255.101team0:56(84)bytesofdata.
64bytesfrom10.1.0.1:icmp_seq=1ttl=64time=0.874ms
64bytesfrom10.1.0.1:icmp_seq=2ttl=64time=1.41ms
64bytesfrom10.1.0.1:icmp_seq=3ttl=64time=0.641ms
^C
---10.1.0.1pingstatistics---
3packetstransmitted,3received,0%packetloss,time2013ms
rttmin/avg/max/mdev=0.641/0.976/1.413/0.323ms
[root@c7node2network-scripts]#teamdctlteam0state|grep"activeport"
activeport:eno33554984
[root@c7node2network-scripts]#上面可知活动接口为eno33554984当物理上断开一个接口再次查看
#可以看到已经切换活动网卡为备用网卡了,当然当主网卡恢复正常时,为了保证链路稳定性,不会自动切换回来
[root@c7node2network-scripts]#teamdctlteam0state|grep"activeport"
activeport:eno50332208

七、 route路由管理命令:

route -n 查看路由(在windows中可以使用route print打印路由)

使用route命令可以给主机添加或删除路由,其中子网掩码可以用netmask来指定

可以添加0.0.0.0/0表示默认路由

route add|delete [-net|-host] target [netmask ] [gw gateway] [dev interface]

示例:

[root@cnode6_8~]#routeadd-net8.0.0.0/8gw10.1.0.1deveth4
[root@cnode6_8~]#routeadd-net8.0.0.0/16gw10.1.0.1deveth4
[root@cnode6_8~]#routedelete-net8.0.0.0/16gw10.1.0.1deveth4
[root@cnode6_8~]#routedelete-net8.0.0.0/24gw10.1.0.1deveth4
[root@cnode6_8~]#route-n|grepeth4
10.1.0.00.0.0.0255.255.0.0U100eth4
8.0.0.010.1.0.1255.0.0.0UG000eth4
八、 使用netstat和ss命令查看网络套接字信息:

使用netstat命令查看网络连接路由表,端口信息

常用参数:前面是短选项,管道后面是相应的长选项

-t | --tcp :tcp相关协议

-u |--udp:udp相关协议

-w|raw:raw socket相关

-l |listening:处于监听状态

-a|all :所有状态

-n |numeric:以数字显示ip和端口号

-p|--program : 显示相关进程及PID

-I 显示接口统计信息

示例:(常用的组合:-tan,-uan,-tnl,-unl)

[root@cnode6_8~]#netstat-tnl
ActiveInternetconnections(onlyservers)
ProtoRecv-QSend-QLocalAddressForeignAddressState
tcp000.0.0.0:540280.0.0.0:*LISTEN
tcp000.0.0.0:1110.0.0.0:*LISTEN
tcp000.0.0.0:220.0.0.0:*LISTEN
tcp00127.0.0.1:6310.0.0.0:*LISTEN
tcp00127.0.0.1:250.0.0.0:*LISTEN
tcp00127.0.0.1:60100.0.0.0:*LISTEN
tcp00:::111:::*LISTEN
tcp00:::51792:::*LISTEN
tcp00:::22:::*LISTEN
tcp00::1:631:::*LISTEN
tcp00::1:25:::*LISTEN
tcp00::1:6010:::*LISTEN

[root@cnode6_8~]#netstat-unl
ActiveInternetconnections(onlyservers)
ProtoRecv-QSend-QLocalAddressForeignAddressState
udp000.0.0.0:9960.0.0.0:*
udp000.0.0.0:1110.0.0.0:*
udp000.0.0.0:6310.0.0.0:*
udp00127.0.0.1:6590.0.0.0:*
udp000.0.0.0:680.0.0.0:*
udp000.0.0.0:488400.0.0.0:*
udp00:::996:::*
udp00:::111:::*
udp00:::32927:::*

[root@cnode6_8~]#netstat-uan
ActiveInternetconnections(serversandestablished)
ProtoRecv-QSend-QLocalAddressForeignAddressState
udp000.0.0.0:9960.0.0.0:*
udp000.0.0.0:1110.0.0.0:*
udp000.0.0.0:6310.0.0.0:*
udp00127.0.0.1:6590.0.0.0:*
udp000.0.0.0:680.0.0.0:*
udp000.0.0.0:488400.0.0.0:*
udp00:::996:::*
udp00:::111:::*
udp00:::32927:::*

[root@cnode6_8~]#netstat-tan
ActiveInternetconnections(serversandestablished)
ProtoRecv-QSend-QLocalAddressForeignAddressState
tcp000.0.0.0:540280.0.0.0:*LISTEN
tcp000.0.0.0:1110.0.0.0:*LISTEN
tcp000.0.0.0:220.0.0.0:*LISTEN
tcp00127.0.0.1:6310.0.0.0:*LISTEN
tcp00127.0.0.1:250.0.0.0:*LISTEN
tcp00127.0.0.1:60100.0.0.0:*LISTEN
tcp052192.168.66.129:22192.168.66.1:53171ESTABLISHED
tcp00:::111:::*LISTEN
tcp00:::51792:::*LISTEN
tcp00:::22:::*LISTEN
tcp00::1:631:::*LISTEN
tcp00::1:25:::*LISTEN
tcp00::1:6010:::*LISTEN

[root@cnode6_8~]#netstat-I//显示内核中接口统计信息
KernelInterfacetable
IfaceMTUMetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVR
bond01500058073000155000
eth1150002712200020000
eth21500016690001001000
eth3150003060700055000
eth41500027466000100000
lo6553603200032000
相关文章
最新文章
热点推荐