1、网口设置
网口设置IP,即操作/etc/sysconfig/network-scripts路径下的ifcfg-xx文件
主要参数详解:
DEVICE:网口名
ONBOOT:表示启动系统时是否激活网卡,yes为激活,no不激活
HWADDR:mac值
DEFROUTE://默认路由设置,若yes,则填写了ip地址,则会自动生成一条默认路由,为no,则在设置ip时不会生成默认路由,只会生成接口路由
NAME:网口名
BOOTPROTO:ip的方式,static为静态ip,dhcp为动态获取ip
GATEWAY:为网关地址,可以填也可以不填
IPADDR:ipv4地址
NETMASK:子网掩码,ipv4有,ipv6的时候是prefixlen前缀
.......
设置好参数之后,则是重启网络,或者重启网口
重启网络命令:
systemctl restart NetworkManager
nmcli c reload
nmcli d reapply "${ethName}"
nmcli c down "${ethName}"
nmcli --wait 5 c up "${ethName}"
这个命令不确定,需要根据自己的操作系统来决定,我们是自己公司研发的操作系统,所以重启网络有问题,需要结合很多命令才可以
执行完重启之后,使用ifconfig命令查询,即可查到新配置的网口ip地址
2、Bond配置
Bond为网口的聚合,即多个网口聚合成一个网口,即为Bond
Bond的负载模式分为多种,目前我们只设置两种:轮询和负载
新建一个Bond,即创建一个Bond配置文件,里面参数和普通的网口配置基本差不多
mode=0轮询,mode=1负载,如果聚合了两个子网口,则子网口的配置文件也会追加Bond配置的参数
MASTER表示绑定的Bond名称,SLAVE=yes表示当前是Bond的子节点
此时,一个Bond就创建完毕了,重启网络,重启网口即可在ifconfig查询列表中展示出来,Bond的mac值为子口中的任意一个
使用ip addr命令查看,可以看到子口绑定的bond口,如图所示:
但是如果两个bond绑定的子口中存在有未插线的,则对应的子口不会显示master bondx信息
注:删除Bond的时候,如果要做到强制删除,需要卸载Bond的驱动,重新加载驱动,重启网络等操作
rmmod bonding
modprobe bonding
3、路由配置
查询路由命令分为ipv4和ipv6
route -n
route -6 -n
Destination:目标网段,是一个地址段
Gateway:网关/下一跳
Genmask:子网掩码
Metric:优先级
Iface:绑定的网口,即从哪个网口出
如果Destination为0.0.0.0则是默认路由,即所有的地址都可以走此条路由,优先级越高,优先走哪条路由,默认路由优先级最高,一般是0,非0.0.0.0目标网段的为接口路由,接口路由是在给某个接口设置IP的时候,系统就会创建一个接口路由,当修改了接口的IP,系统会自动将原有接口的路由清除掉
ipv6的路由和ipv4的相比略有不同,ipv6没有子网掩码,地址中的/64,64就相当于子网掩码
添加路由命令
ip route add <Destination>/<mask> via <gateway> dev <port> metric <metric>
ip -6 route add <Destination> via <nextHop> dev <port> metric <metric>
删除路由
ip route del <Destination>/<mask> via <gateway> dev <port> metric <metric>
ip -6 route del <Destination> via <nextHop> dev <port> metric <metric>
4、重启命令
一般配置了网口IP或者Bond IP都要进行重启网口和重启服务的操作,重启网口使用的是nmcli相关命令
systemctl restart NetworkManager
nmcli c reload
nmcli d reapply "${ethName}"
nmcli c down "${ethName}"
nmcli --wait 5 c up "${ethName}"
注:网口名不一定是ifconfig查出来的网口名,实则是nmcli对应的NAME
nmcli c up ifname <deviceName>
因为NAME可能是系统随机生成的,跟网口名无法对应上,所以使用ifname + 网口名即可
5、流量分离(公司系统内部实现,不具有通用性)
所谓的流量分离其实就是对于出口的流量进行隔离,根本来说即接口的划分隔离,比如给系统创建两个命名空间
此时port1位于管理空间中,其余的port位于业务空间中,彼此之间的流量相互分离,在管理空间的出口流量只会走port1,追加、移除、更新网口到空间的相关命令
isecos_netns --add-port <name>
isecos_netns --del-port <name>
isecos_netns --update-port <name>
若想进入到管理空间,需执行命令
ip netns exec management bash
若想进入到系统空间,需执行命令
nsenter --targer 1 --net
需要注意的是,设计网络的相关命令,尤其设计到网口的,比如Ifconfig,ethtool,tcpdump命令追加的网口名,一定要去对应的空间去执行,否则就是找不到此网口