Linux网络配置基础
基本网络配置
将Linux主机接入到网络,需要配置网络相关设置。
一般包括如下内容:
主机名:hostname
示例:
临时有效
[root@centos6 ~]# hostname MyHostName [root@centos6 ~]# hostname MyHostName [root@centos6 ~]# echo $HOSTNAME centos6.localdomain
注销后命令提示符显示为修改内容,并且变量$HOSTNAME显示为修改内容
[root@centos6 ~]# exit logout [root@MyHostName ~]# hostname MyHostName [root@MyHostName ~]# echo $HOSTNAME MyHostName
注意:以上操作只会对当前shell进程有效,重启或关机则失效
[root@centos6 ~]# vim /etc/sysconfig/network
并运行hostname命令,使主机名立即生效或者重新启动系统
IP/netmask/GATEWAY/DNS
IP地址
子网掩码
默认网关:GATEWAY
DNS服务器:
主DNS服务器:DNS1
次DNS服务器:DNS2
第三DNS服务器:DNS3
网络配置方式
动态分配:
DHCP: Dynamic Host Configuration Protocol
静态指定:
配置使用的工具
字符工具:
CentOS6
system-config-network
[root@MyHostName ~]# system-config-network
setup
[root@MyHostName ~]# setup
CentOS7
nmtui
[root@localhost ~]# nmtui
图形化界面工具
CentOS7
nm-connection-editor
或者
命令
ifcfg:ifconfig,route,netstat
ip:object {link,addr,route},ss,tc
nmcli命令CentOS7(特有)
配置网络接口:
接口命名方式(默认):
CentOS6
以太网网卡:eth[0,1,2,...]
广域网设备(ppp):ppp[0,1,2...]
DELL服务器有自己的网卡命名方式
CentOS7
eno16777736
配置文件
/etc/udev/rules.d/ 下的文件为设备规则文件,定义了Linux设备的命名方式
其中网卡的命名方式由70-persistent-net.rules定义
并且编辑/etc/sysconfig/network-scripts/ifcfg-eth0
修改如图
注意:ifcfg-eth0的文件名后侧的eth#是什么不重要,但是为了规范化尽量保持名称一致。
/etc/sysconfig/network-scripts/ifcfg-eth# 每行含义
DEVICE=:此配置文件应用到的设备
BOOTPROTO=:激活此设备时使用的地址配置协议,常用的dhcp动态获取IP地址, static固定IP地址, none固定IP地址(当网卡多IP时必须用此模式), bootp;此行省略则默认为固定IP地址模式
TYPE=:接口类型;常见有的Ethernet, Bridge;忽略此行默认为Ethernet
UUID=:设备的惟一标识
ONBOOT=:在系统引导时是否自动激活此设备
NM_CONTROLLED=:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“ no”
IPADDR=:指明IP地址
NETMASK=:子网掩码
GATEWAY=: 默认网关
PREFIX=:网络地址位数(例如:值为16)
DNS1=:第一个DNS服务器指向
DNS2=:第二个DNS服务器指向
DNS3=:第三个DNS服务器指向
USERCTL=:普通用户是否可控制此设备
DEFROUTE=:...
IPv4_FAILURE_FATAL=:...
IPv6INIT=:...
IPV6_AUTOCONF=:...
IPV6_DEFROUTE=:...
IPV6_PEERDNS=:...
IPV6_PEERROUTES=:...
IPV6_FAILURE_FATAL=:...
NAME=:...
HWADDR=:对应的设备的真实MAC地址
MACADDR=:对应的设备的显示MAC地址
PEERDNS=:如果BOOTPROTO的值为“ dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
PEERROUTES=:...
LAST_CONNECT=:...
用于网络别名的参数
ONPARENT=yes:用于网卡别名;当物理网卡启动网卡别名亦启动
用于单IP多网卡的bond接口配置文件
SLAVE=yes:是否是辅助网卡
MASTER=bond0:指定主网卡
BONDING_OPTS= “miimon=100 mode=0”:指定bond检测主网卡状态的时间间隔以及模式类型(模式mode=0 | 1 | 2)
当中存在如下几种情况网卡即能正常识别使用
DEVICE=:此配置文件应用到的设备
ONBOOT=:在系统引导时是否自动激活此设备
BOOTPROTO=:激活此设备时使用的地址配置协议,常用的dhcp动态获取IP地址, static固定IP地址, none固定IP地址(当网卡多IP时必须用此模式), bootp;此行省略则默认为固定IP地址模式
或
DEVICE=:此配置文件应用到的设备
ONBOOT=:在系统引导时是否自动激活此设备
IPADDR=:指明IP地址
PREFIX=:网络地址位数(例如:值为16) 或者 NETMASK=:子网掩码
GATEWAY=: 默认网关
DNS1=:第一个DNS服务器指向
DNS2=:第二个DNS服务器指向
DNS3=:第三个DNS服务器指向
DNS记录配置文件
/etc/resolv.conf
修改完成后
linux系统的NetworkManager服务(NM)会自动重新识别启动网卡
NetworkManager服务状态
[root@centos6 ~]# service NetworkManager status NetworkManager (pid 1986) is running...
注意:但是此服务并不稳定,有时会由失效现象,所以建议手动重启网络服务
停止NetworkManager服务
先临时关闭(重启系统又会重启此服务)
[root@centos6 ~]# service NetworkManager stop Stopping NetworkManager daemon:[ OK ]
永久关闭(重启后不再重启此服务)
[root@centos6 ~]# chkconfig NetworkManager off
重启NetworkManager服务
[root@centos6 ~]# service NetworkManager restart Stopping NetworkManager daemon:[ OK ] Setting network parameters... [ OK ] Starting NetworkManager daemon:[ OK ]
下次开机自动重启NetworkManager服务
[root@centos6 ~]# chkconfig NetworkManager on
手动重启网络服务
[root@centos6 ~]# service network restart
ifconfig命令
ifconfig是一个用来查看、配置、启用或禁用Linux内核网络接口的工具,这个工具极为常用的。可以用这个工具来临时性的配置网卡的IP地址、掩码、广播地址、网关等。也可以把 它写入一个文件中(比如/etc/rc.d/rc.local),这样系统引导后,会读取这个文件,为网卡设置IP地址
注意:用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
使用格式:
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address ...
参数:
-a 显示全部接口信息
[root@centos6 ~]# ifconfig -a
显示激活状态的网络设备信息
第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。
第二行:网卡的IP地址、子网、掩码。
第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。
第四、五行:接收、发送数据包情况统计。 第七行:接收、发送数据字节数统计信息。
-s 显示摘要信息(类似于 netstat -i)
up 启动指定网络设备/网卡
[root@centos6 ~]# ifconfig eth1 up [root@centos6 ~]# ifconfig eth1 Link encap:Ethernet HWaddr 00:0C:29:A5:07:7E inet addr:10.1.249.92 Bcast:10.1.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fea5:77e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:266779 errors:0 dropped:0 overruns:0 frame:0 TX packets:11962 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:24047580 (22.9 MiB) TX bytes:2752964 (2.6 MiB)
down 关闭指定网络设备/网卡
[root@centos6 ~]# ifconfig eth1 down [root@centos6 ~]# ifconfig loLink encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:32 errors:0 dropped:0 overruns:0 frame:0 TX packets:32 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2250 (2.1 KiB) TX bytes:2250 (2.1 KiB)
[-]arp:启用或禁用网络接口的arp协议;
[-]promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包;
[-]allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包;
mtu<字节数N>:设置网卡的MTU最大传输单元 (bytes);
dstaddr:设定一个远端地址,建立点对点通信;
netmask<子网掩码> 设置网络设备的子网掩码;
add:给指定网卡配置IPv6地址;
del:删除指定网卡的IPv6地址;
tunel<地址>:建立IPv4与IPv6之间隧道通信地址;
-broadcast<地址> 为指定网卡设置广播协议;即将要送往指定地址的数据包当成广播数据包来处理;
-pointtopoint<地址> 为网卡设置点对点通讯协议;即与指定地址的网络设备建立直接连线,此模式具有保密功能;
multicast 为网卡设置组播标志;
txqueuelen<长度> 为网卡设置传输列队的长度;
注意:ifconfig的设置是立生效的
相关读取设备信息文件
/proc/net/dev
/proc/net/if_inet6
ip命令
ip命令用于显示/控制路由设备、策略路由和隧道
使用格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm | netns | l2tp | tcp_metrics }
OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -n[etns] name }
OPTIONS选项:
-s,-stats,-statistics 输出更为详尽的信息。如果这个选项出现两次或者多次,输出的信息将更为详尽。
-f,-family 这个选项后面接协议种类,包括:inet、inet6或者link,强调使用的协议种类。如果没有足够的信息告诉ip使用的协议种类,ip就会使用默认值inet或者any。link比较特殊,它表示不涉及任何网络协议。
-4 是-family inet的简写。
-6 是-family inet6的简写。
-B 是-family bridge的简写。
-D 是-family decnet的简写。
-I 是-family ipx的简写。
-0 是-family link的简写。
-o,-oneline 对每行记录都使用单行输出,回行用字符代替。如果你需要使用wc、grep等工具处理ip的输出,会用到这个选项。
-r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址。
OBJECT是你要管理或者获取信息的对象。
目前ip认识的对象包括:
address:一个设备的协议(IP或者IPV6)地址
addrlabel:标签配置协议地址选择。
link:网络设备
maddress:多播地址
mroute:多播路由缓冲区条目
mrule:在多播路由策略规则数据库。
neighbour:管理ARP或者NDISC缓冲区条目
netns:管理网络名称空间。
ntable:管理邻居缓存的操作。
route:路由表条目
rule:路由策略数据库中的规则
tunnel:IP上的通道
route命令
route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。通过已用ifconfig(8)程序配置好的接口来指定的主机或网络设置静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。 在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
使用格式:
route [-CFvnee]
route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]
route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]
route [-V] [--version] [-h] [--help]
选项(OPTIONS):
-A family:用指定的地址类型(族)(如inet',
inet6')。
-F:显示内核的FIB路由表。其格式可以用-e 和 -ee选项改变。
-C:显示内核的路由缓存。
-v:选用详细操作信息模式
-n:不执行DNS反向查找,直接以数字形式IP地址代替解释主机名形式来显示地址。此项对试图检测对域名服务器进行路由发生故障的原因非常有用。
-e:用netstat(8)的格式来显示路由表。-ee将产生包括路由表所有参数在内的大量信息。
add:添加指定的路由记录。
示例:#增加一条到达192.56.76.0的路由。
[root@localhost ~]#route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
del:删除指定的路由记录。
[root@localhost ~]#route del -net 224.0.0.0 netmask 240.0.0.0 dev eth0
target:指定目标网络或主机。可以用点分十进制形式的IP地址或主机/网络名。
-net:路由目标为网络(即到一个网络的路由表)。
-host:路由目标为主机(即到一个主机的路由表)。
示例:所有去往192.168.0.2主机的数据包将发往网关地址192.168.0.1
[root@localhost ~]#route add -host 192.168.0.2 gw 192.168.0.1
netmask NM:为添加的路由指定网络掩码。
gw GW:为发往目标网络/主机的任何分组指定网关(即为设置默认网关)。注意:指定的网关首先必须是可达的。也就是说必须为该网关预先指定一条静态路由。如果你为本地接口之一指定这个网关地址的话,那么此网关地址将用于决定此接口上的分组将如何进行路由。这是BSD风格所兼容的。
示例:添加或删除默认网关
[root@localhost ~]#route add default gw 192.168.120.240 [root@localhost ~]#route del default gw 192.168.120.240
metric M:把路由表中的路由值字段(由路由进程使用)设为M。
mss M:把基于此路由之上的连接的TCP最大报文段(区块)长度设为M字节。这通常只用于优化路由设置。默认值为536。
window W:把基于此路由之上的连接的TCP窗口长度设为W字节。这通常只用于AX.25网络和不能处理背对背形式的帧的设备。
irtt I:把基于此路由之上的TCP连接的初始往返时间设为I毫秒(1-12000)。这通常也只用于AX.25网络。如果省略此选项,则使用RFC1122的缺省值300ms。
reject:设置一条阻塞路由以使一条路由查找失败。这用于在使用缺省路由前先屏蔽掉一些网络。但这并不起到防火墙的作用。
示例:增加或删除一条屏蔽的路由,目的地址为10.x.x.x将被拒绝或解禁。
[root@localhost ~]#route add -net 10.0.0.0 netmask 255.0.0.0 reject [root@localhost ~]#route del -net 10.0.0.0 netmask 255.0.0.0 reject
mod, dyn, reinstate:设置一条动态的或更改过的路由。这些标志通常只由路由进程来设置。这只用于诊断目的,
dev If:强制使路由与指定的设备关联,因为否则内核会自己来试图检测相应的设备(通常检查已存在的路由和加入路由的设备的规格)。在多数正常的网络上无需使用。
如果dev If是命令行上最后一个指定的选项,那么可以省略关键字dev,因为它是缺省值。否则路由修改对象(metric - netmask- gw - dev)无关紧要。网络设置静态路由。
dev:路由记录所表示的网络接口。
显示本机系统内核静态路由表
[root@centos6 ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.1.0.0 * 255.255.0.0 U 0 0 0 bond0 link-local * 255.255.0.0 U 1004 0 0 bond0 default 10.1.0.1 0.0.0.0 UG 0 0 0 bond0 [root@centos6 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 bond0 169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 bond0 0.0.0.0 10.1.0.1 0.0.0.0 UG 0 0 0 bond0
输出结构各项含义:
输出列
Destination:目的地
目的地网络或目的地主机。
Gateway:网关
网关地址或如果没有设置则为“*”。
Genmask:子网掩码
目标网络的子网掩码;255.255.255.255的主机目的地和“0.0.0.0”默认路由。
Flags:标志
U(路线)
H(目标是一个主机)
G(使用网关)
R(动态路由恢复路由)
D(动态安装守护程序或重定向)
(修改路由守护进程或重定向)
(由addrconf安装)
C(缓存条目)
!(拒绝)
Metric:目标的度量距离(通常为跳数)。它不使用最新的内核,但可能需要通过路由守护进程。
Ref:引用这条路线。(不是在Linux内核中使用。)
使用计数的查找路线。根据使用- f和- c
(- f)或者是路由缓存未击中(- c)。
Iface:接口来为这条路线将发送数据包。
MSS:超过这条路线海量存储系统(MSS)中TCP连接的默认最大一段大小。
Window:此路由记录上TCP连接窗口的默认窗口大小。
irtt 初始RTT(往返时间)。内核使用这种猜测最好的TCP协议参数没有等待(可能缓慢)的应答。
HH (cached only):ARP缓存条目和路线的数量指的是硬件头缓存的缓存路线。这将是如果不是硬件地址所需的接口(例如,lo)缓存路线。
Arp (cached only):Arp缓存(唯一的)是否缓存路线的硬件地址是最新的。
相关文件
route命令读取信息文件
/proc/net/ipv6_route
/proc/net/route
/proc/net/rt_cache
设置route静态路由表文件
/etc/rc.local或/etc/rc.d/rc.local
注意:
路由分类:
主机路由:精确到每台机器IP和Mask
例如:目标: 192.168.1.3 网关: 172.16.0.1
# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
网络路由:记录网络路径(子网网段)
例如:
目标:192.168.0.0 网关: 172.16.0.1
# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默认路由:0.0.0.0/0 (一般为边界路由器如互联网;而且只能是一个出路的路由器才可以)
二:在linux下设置永久路由的方法:
1.在/etc/rc.local里添加
方法:
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.2.254
2.在/etc/sysconfig/network里添加到末尾
方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev
3./etc/sysconfig/static-routes : (没有static-routes的话就手动建立一个这样的文件)
any net 192.168.3.0/24 gw 192.168.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129
如果在rc.local中添加路由会造成NFS无法自动挂载问题,所以使用static-routes的方法是最好的。
无论重启系统或重启网络:service network restart均可以生效。
这里并没有错误的地方,只不过之前没有接触对这些参数没什么想法,这次正好研究了下,大概了解了下没个参数的意思。
首先从最简单的是route add方法:
route add这个是添加路由的命令,这个没什么好说的,然后是后面的-host和net参数,根据紧跟参数后面的信息可以发现host指的是添加一个主机到路由中,net是添加一个网段到路由中。在后面的参数是dev和gw,字面理解加上后面紧跟的值判断,dev表示这个host或者这段net走的是那个网口,gw是gateway,自然是通过哪个网关了。对这里为何指定网口或者指定网关都行呢,我的认识是这样的,网口上配置有网关的信息,指定的网口其实最终还是去读取这个网口对应的网关信息,等效于指定gw参数。不过指定网口一般是由于有多个网络环境的情况,如果网口没有指定网关,会去读取默认的网关,所以这里一般要求把网口的网关信息配置上去,在linux下很多时候网关信息并不是配置在网口的配置文件,比如:/etc/sysconfig/network-scripts/ifcfg-eth0 文件里面,而是在/etc/sysconfig/network这里面,所以在用dev参数的时候需要小心这点,尽可能通过指定gw的方式。
为什么会介绍到route add方法,因为后面会有用到。现在回到主题,关于static-routes的设置。网上一般的都是写着:
any net 192.168.3.0/24 gw 192.168.3.254
设置的都是整个网段的,但如果是单个主机怎么设置呢?同时从厂家那边给了一个脚本是:
eth0 x.x.x.x netmask 255.255.255.192 gw x.x.x.x
看上去也很对的样子,但是执行发现netstat -an里面看不到添加的信息,完全不行。
然后我们在看下static-routes这个文件的作用,
static-routes文件又是什么呢,根据网上的说法,static-routes其实在被network这个脚本调用的,这个文件的放置在/etc/sysconfig目录下,在network脚本中的位置是打开这个脚本:
/etc/rc.d/init.d/network
里面有写到:
# Add non interface-specific static-routes. if [ -f /etc/sysconfig/static-routes ]; then grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do /sbin/route add -$args done fi
network在执行的时候到static-routes里面寻找any开头的行,然后执行
/sbin/route add -$args 相当于手动执行了route add脚本,那后面事情就简单了,回到了手动执行的方式,根据前面的说明,正确的脚本就是:
any host 10.0.0.10 gw 192.168.1.1
network执行的时候把any去掉,获取后面的参数:host 10.0.0.10 gw 192.168.1.1
然后执行route add -host 10.0.0.10 gw 192.168.1.1
注意这里host前面的-是network自带的,不需要配置到static-routes文件中。
解决NFS问题的描述:
按照linux启动的顺序,rc.local里面的内容是在linux所有服务都启动完毕,最后才被执行的,其中的内容是在netfs之后才被执行的。
即在netfs启动时,服务器上的静态路由是没有被添加的,所以netfs挂载不能成功。
配置动态路由
通过守护进程获取动态路由
安装quagga包,支持多种格式的RIP、 OSPF和BGP
命令vtysh配置
经典功能应用效果
网卡别名
对虚拟主机有用(方便移动管理)
将多个IP地址绑定到一个NIC(网卡)上
网卡命名方式为
网卡名:N(数值)
例如
eth0:1
eth0:2
eth0:3
而对应设备接口配置文件格式
ifcfg-ethX:xxx
1、首先要关闭NetworkManager
[root@centos6 ~]# chkconfig NetworkManager off [root@centos6 ~]# service NetworkManager stop Stopping NetworkManager daemon:[ OK ]
2、网卡绑定几个IP就对应几个网卡配置(IP)文件
所以可以复制现有配置文件,并按网卡别名格式命名复制的文件
[root@centos6 network-scripts]# cp ifcfg-eth1 ifcfg-eth1:1 [root@centos6 network-scripts]# cp ifcfg-eth1 ifcfg-eth1:2
3、编辑新复制的配置文件
[root@centos6 network-scripts]# vim ifcfg-eth1:1
[root@centos6 network-scripts]# vim ifcfg-eth1:2
注意:我们前文提到过接口配置文件中各选项的含义
在网卡别名文件中我们可以添加下列内容:
#用于网卡别名;当物理网卡启动网卡别名亦启动
ONPARENT=yes
4、重启网络服务
原文件不需要额外配置
[root@centos6 network-scripts]# service network restart Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface:[ OK ] Bringing up interface eth1: Determining if ip address 10.1.249.92 is already in use for device eth1... Determining if ip address 10.1.249.100 is already in use for device eth1... Determining if ip address 10.1.249.200 is already in use for device eth1... [ OK ]
这样我的eth1这一块网卡就拥有三个固定IP地址了!
而且我们可以将原先的主文件ifcfg-eth1中的固定IP修改成动态获取IP地址(dhcp模式),这样此网卡既可以自动获取IP地址又能拥有固定IP地址,想访问此机器就有多个IP地址了。
注意:之所以dhcp模式不改在别名网卡文件是因为,网卡别名必须使用静态联网(固定IP),所以dhcp模式只能是在主网卡文件中;而且网卡别名的使用是基于物理网卡的,所以物理网卡能够正常使用,网卡别名才能有效。
参考/usr/share/doc/initscripts-*/sysconfig.txt
多网卡绑定一个IP(×××能提升、访问冗余)
CentOS6:用bonding(绑定)实现
CentOS7:用网络组实现
Bonding
就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。
Bonding的工作模式
Mode 0 (balance-rr)
轮转( Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力
但是容错能力并不是很好,甚至没有
Mode 1 (active-backup)
活动-备份(主备)策略:在绑定中,只有一个slave被激活。
当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文。本模式提供容错能力。
构建Mdoe 1模式的环境
注意:如果接上文的网卡别名的话,再做此操作需要现将网卡别名接口配置文件都删除,并重启网络服务才可以。
1、首先要关闭NetworkManager
[root@centos6 ~]# chkconfig NetworkManager off [root@centos6 ~]# service NetworkManager stop Stopping NetworkManager daemon:[ OK ]
2、利用虚拟机再添加额外的网卡
3、创建bonding设备的配置文件ifcfg-bond0文件在/etc/sysconfig/network-scripts/目录下
vim /etc/sysconfig/network-scripts/ifcfg-bond0
注意:BONDING_OPTS= “miimon=100 mode=1”
miimon=100:表示每100ms辅助网卡就要检测主网卡是否正常
如果不正常,mode1的辅助网卡就会接替主网卡工作
mode=1:表示此bond模式为mode 1
4、配置物理网卡接口配置文件
注意:添加网卡后要留意网卡的设备名称,即进行第2部操作时留意名称,并在配置和创建物理网卡配置文件时,命名正确
SLAVE=yes:是否是辅助网卡
MASTER=bond0:指定主网卡
5、重启网络服务
[root@centos6 network-scripts]# service network restart Shutting down interface bond0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface:[ OK ] Bringing up interface bond0: Determining if ip address 10.1.249.250 is already in use for device bond0... [ OK ]
6、查看网卡状态
查看/proc/net/bonding/bond0文件
[root@centos6 ~]# cat /proc/net/bonding/bond0
7、测试
完成了切换的瞬间有个丢包然后切换完成,又能ping通了
3、路由实验
1、首先要关闭NetworkManager
[root@centos6 ~]# chkconfig NetworkManager off [root@centos6 ~]# service NetworkManager stop Stopping NetworkManager daemon:[ OK ]
2、配置两个虚拟机R1和R2的网卡
R1
[root@centos6 network-scripts]# vim ifcfg-eth0
[root@centos6 network-scripts]# vim ifcfg-eth1
R2
[root@centos6 network-scripts]# vim ifcfg-eth0
[root@centos6 network-scripts]# vim ifcfg-eth1
3、重启网络服务
4、添加路由
R1
[root@centos6 ~]#route add -net 172.16.0.0/16 gw 10.0.0.2 dev eth1
R2
[root@centos6 network-scripts]# route add -net 192.168.0.0/24 gw 10.0.0.1 dev eth1
5、linux临时开启路由器功能
将/proc/sys/net/ipv4/ip_forward文件中的值改为1
[root@centos6 ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
6、临时关闭防火墙
[root@centos6 ~]#iptables -F
7、在本地计算机物理网卡配置192.168.0.100
再开一个虚拟机模拟172.16.0.200
并配置它们的网关
一、作业:
1、某公司申请到一个C 类IP 地址,但要连接6 个的子公司,最大的一个子 公司有26 台计算机,每个子公司在一个网段中,则子网掩码应设为?
按照C类网络定义为
前三段为网络号,最后一段为主机号
网络号:110 0 0000-110 1 1111 :192-223
网络数量:2^21
每个网络中的主机数量:2^8-2=254
默认子网掩码:255.255.255.0 或者 /24
若连接6个子公司则相当于划分6个子网
则网络位要向主机位借3位(2^3=8>=6)
主机位剩余5位则主机数为2^5-2=30>26最大子公司计算机数量因而满足需求
所以网络位多了三位,主机位少了三位
则子网掩码应为255.255.255.224
2、一家集团公司有12家子公司,每家子公司又有4个部门。上级给出一个172.16.0.0/16的网段,让给每家子公司以及子公司的部门分配网段。
172.16.0.0/16为B类网段
网络位为前2位,后2位为主机位
由于有12家子公司同时每个子公司又有4个部门
则先将172.16.0.0/16 分成12个子网
网络位需要向子网借4位(2^4=16>=12)
网络位变为20位(/20)
子公司子网掩码变为255.255.240.0
则这12个子网的
网段分别为
172.16.0.1-172.16.15.254
172.16.16.1-172.16.31.254
172.16.32.1-172.16.47.254
172.16.48.1-172.16.63.254
172.16.64.1-172.16.79.254
172.16.80.1-172.16.95.254
172.16.96.1-172.16.111.254
172.16.112.1-172.16.127.254
172.16.128.1-172.16.143.254
172.16.144.1-172.16.159.254
172.16.160.1-172.16.175.254
172.16.176.1-172.16.191.254
...
每个子公司四个部门相当于每个子公司又各自分4个子网
网络位再向主机位借2位(2^2=4)
则网络位为22位
部门子网掩码:255.255.252.0
第一子公司4个部门
172.16.0.1-172.16.3.254
172.16.4.1-172.16.7.254
172.16.8.1-172.16.11.254
172.16.12.1-172.16.15.254
第二子公司4个部门
172.16.16.1-172.16.19.254
172.16.20.1-172.16.23.254
172.16.24.1-172.16.27.254
172.16.28.1-172.16.31.254
...
第十二子公司4个部门
172.16.176.1-172.16.179.254
172.16.180.1-172.16.183.254
172.16.184.1-172.16.187.254
172.16.188.1-172.16.191.254
3、某集团公司给下属子公司甲分配了一段IP地址192.168.5.0/24,现在甲公司有两层办公楼(1楼和2楼),统一从1楼的路由器上公网。1楼有100台电脑联网,2楼有53台电脑联网。如果你是该公司的网管,你该怎么去规划这个IP?
192.168.5.0/24为C类网段的地址
最大主机数量2^8-2=254台机器
若单一路由器则可以划分两个子网
网络位借主机位 1位
最大主机数量2^7-2=126
子网网段如下图
192.168.5.2/25-192.168.5.127/25
192.168.5.129/25-192.168.5.254/25
若分成3个子网则
网络位需要向主机位借2位(2^2=4>3)
则分成4个子网每个子网主机个数:2^6-2=62
则1楼100台机器需要分成两个子网,2楼一个子网,剩余一个子网
理论上来说分成2个子网网段即可,但是在实际生产环境下,还是推荐三个网段,通过划分vlan等手段可以使个网段正常访问,而且各网段仍然有剩余地址可以为之后使用提供,而多出来的网段则可以留作预留,比如给后来新增设的部门,而如果只分两个网段,则没有这种预留备份的效果,灵活性大大折扣了
所以综上所述推荐分4个网段的方案
转载于:https://blog.51cto.com/2849159106/1846335