Linux中的网络设置
Linux系统具有强大的网络功能,例如路由、Bonding等功能。
一.基本网络配置
Linux系统安装完成之后,就会自动生成网卡配置文件,位于/etc/sysconfig/network-scripts/下,文件名为ifcfg-eth0。添加了新网卡后如果没有此文件,可以自己创建一个相对应的文件。
ifcfg-eth0 网卡文件的格式:
1.配置选项:
HWADDR:对应的设备MAC地址
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none,bootp
NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no
ONBOOT:在系统引导时是否激活此设备
TYPE:接口类型;常见有的Ethernet, Bridge
UUID:设备的惟一标识
GATEWAY: 默认网关
DNS1:第一个DNS服务器指向
DNS2:第二个DNS服务器指向
USERCTL:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的
dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
*IPADDR:指明IP地址
*NETMASK:子网掩码
*DEVICE:此配置文件对应的设备
- 其中最后带*号的三条配置是必须要有的,其他的根据实际情况需要配置。
2.重启网络服务,使配置文件生效
centos 6:
service NetworkManager stop NetworkManager会和network冲突,所以建议关闭
service network restart 重启network服务
centos 7:
systemctl restart network
二.路由功能配置
在实际生产中我们也可以把Linux系统配置为路由器。
如下图所示,共有5台主机,中间R1,R2,R3三台作为路由器使用。首先我们为5台主机配置好相关的IP地址。
1.开启路由功能
查看路由功能是否开启:
cat /proc/sys/net/ipv4/ip_forward 1 为开通,0 为未开通
开通路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward 此修改内核文件为临时性的,修改即生效,但重启之后会失效
写入相关文件
/etc/sysctl.conf 文件中,修改 net.ipv4.ip_forward = 1
2.添加静态路由
路由配置使用route命令
route
route add/del [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
add 添加路由
del 删除路由
-host 配置为主机路由
-net 配置为网段路由
default 默认路由
target 目标地址或目标网段
gw 后面跟上网关的地址
dev 后面跟上路由出口的网卡设备名
首先,我们为两台主机配置网关,或者添加默认路由。以A主机为例:
route add default 192.168.17.3 dev eth0
然后再根据网络具体情况配置静态路由。以R1为例
R1:
route add -net 192.168.17.0/24 gw 192.168.27.2
route add -net 192.168.87.0/24 gw 192.168.37.3
这样就完成了路由功能的配置,但这些路由表示临时的,我们需要写到文件中。
- 1.创建对应网卡的配置文件,在/etc/sysconfig/network-scripts/ 文件夹下,名称为route-IFACE IFACE为网卡的具体名称
- 2.文件内容格式为:192.168.17.0/24 via 192.168.27.2
- 3.每个网卡对应不同的文件和其相应的路由
系统防火墙默认是禁止forward转发,所以在进行试验时可以执行以下命令清除防火墙设置
iptables -F
这样路由表就不会因为重启而丢失。
三.Bonding功能配置
通过Bonding,对同一个IP地址同时绑定两块网卡,可以实现高可用或者负载均衡。绑定之后两块网卡将被修改为相同的MAC地址。
1.Bonding的3种常见工作模式
mode 0 (balance-rr) 从头到尾顺序的在每一个网卡上发送数据包。
mode 1 (active-backup) 只有一个网卡在工作,当工作网卡出现问题时,备用网卡才会被激活使用
mode 3 (broadcast) 所有网卡上传送所有报文
2.Bonding配置
在这里,我以eth0、eth1两块网卡为基础。
首先,创建bond0的配置文件ifcfg-bond0,在/etc/sysconfig/network-scripts/下。
ifcfg-bond0 文件:
DEVICE=bond0
BOOTPROTO=none
BONDING-OPTS= "miimon=100 mode=1" mode为模式的值,miion表示两块网卡的询问时间间隔
IPADDR=192.168.37.100
PREFIX=24
网卡文件的配置,以ifcfg-eth1为例
DEVICE=eth1 对应的设备名
MASTER=bond0 所属于的bond
SLAVE=yes
3.重启服务
service network restart centos 6
systemctl restart network centos 7
有时候重启服务也不能使Bonding生效,这时候可以通过卸载、加载相对应的功能模块来使服务生效。
rmmode bonding 卸载bonding
modprobe bonding 重新加载bonding
查看bond状态
cat /proc/net/bonding/bond0
4.删除Bonding
首先禁用bond0
ifconfig bond0 down
删除相应功能模块
rmmod bonding
最后删除相对应的配置文件。
四.centos 7 中的网卡采用传统命名方式
centos 7 系统采用了新的网卡命名方式,根据网卡的性质而命名为相对应的名称。有时候因为个人习惯,我们可以修改为传统的命名方式。
(1) 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="rhgb quiet " quiet后面加入 net.ifnames=0
或:修改/boot/grub2/grub.cfg
(2) 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3) 重启系统
reboot