网络相关知识总结

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的驱动,重新加载驱动,重启网络等操作,同时也要删除配置文件中的对应的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,且必须指向一个能ping通的网关,才能配置成功

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>

注意: 使用ip route 添加的路由都是临时的,重启网络就丢失了。所以如果在做路由的管理需要做路由的持久化,我们的设计方案是维护一个配置文件存储用户添加的路由,编写一个程序嵌入到Linux中,当重启网络时加载配置文件中的路由写入到route -n中,这样就实现了路由的持久化,重启网络路由不会丢失,如果是在linux后台手动添加的路由,也可以做持久化,但是需要在我们的页面查询一下路由列表,会吧route -n查询出来的路由也写入到配置文件中,这样也实现了,手动在后台追加路由也实现了路由持久化

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 + 网口名即可

注:但是在使用过程中发现有些网口配置了ipv6地址,使用nmcli重启命令,就会出现命令卡死现象,迟迟得不到响应值,但是使用ip link set <deviceName> up是成功的

5、流量分离(公司系统内部实现,不具有通用性)

Linux网络命名空间

Linux网络命名空间是Linux内核的一个特性,它允许将系统资源(如网络接口、IP地址、路由表等)虚拟化,以便在同一物理机上运行的不同进程可以拥有独立的网络环境,这个功能是Linux容器技术的基石之一,因为它允许容器内的应用认为自己在一个独立的网络环境中运行,从而提高了安全性和可扩展性。

所谓的流量分离其实就是对于出口的流量进行隔离,根本来说即接口的划分隔离,比如给系统创建两个命名空间

此时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命令追加的网口名,一定要去对应的空间去执行,否则就是找不到此网口

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值