ip addr命令详解;网卡混杂模式(待总结)

ip addr命令(暂时未找到较为全面的总结文章)
工作正常情况下:UP,LOWER_UP + state UP
被拔网线的情况:NO-CARRIER,UP + state DOWN
link set down:空 + state DOWN

ifconfig命令
工作正常情况下:UP+RUNNING
VM虚拟机模拟拔网线,网络设备状态 UP+无RUNNING
ip link set dev eth1 down之后,网络设备状态 无UP+无RUNNING

 

 

2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 实际是有在工作的,为什么state down???????????
=============

【计算机网络】你真的认识 ip addr 命令的输出内容吗?
https://blog.csdn.net/weixin_41960890/article/details/104934585

网络设备的状态标识
这一块,<BROADCAST,MULTICAST,UP,LOWER_UP>,被称为 net_device flag(网络设备的状态标识)。

UP,表示该网卡处于启动状态。
BROADCAST,表示该网卡有广播地址,可以发送广播包。
MULTICAST,表示该网卡可以发送多播包。
LOWER_UP,表示L1是启动的,也就是网线正插着呢。
mtu 1500,最大传输单元MTU为1500字节,也就是以太网的默认值。
qdisc pfifo_fast,qdisc的全称为 queuing discipline(排队规则)。计算机如果需要通过网络接口发送数据包,它都需要按照这个接口的排队规则进行排序。最简单的排序规则就是 pfifo,也就是我们常说的先入先出的队列形式。而这里的 pfifo_fast 在 pfifo 的基础上,分为了三个波段(数据包按照 Type of Service(服务类型)分入band),其中 band0 的优先级最高,band2 的优先级最低。

========================================================================

混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。默认情况下,网卡只把发给本机的包(包括广播包)传递给上层程序,其他的包一律丢弃。

网卡工作模式
广播模式:物理地址(MAC)是0Xffffff的帧为广播帧,工作在广播模式的网卡接收广播帧。
多播模式:如果将网卡设置为多播模式,它可以接收所有的多播传送帧,而不论他是不是组内成员。
直接模式:只接收目的地址是自己MAC地址的帧。
混杂模式:工作在混杂模式下的网卡接收所有流经网卡的帧。

 

 


网卡的混杂模式介绍
https://blog.csdn.net/chengqiuming/article/details/89603272


ifconfig eth0
ifconfig eth0 promisc #设置网卡为混杂模式
ifconfig eth0 -promisc #取消混杂模式

 

[root@yefeng ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.111 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fee8:30c8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e8:30:c8 txqueuelen 1000 (Ethernet)
RX packets 18382 bytes 7694613 (7.3 MiB)
RX errors 0 dropped 4 overruns 0 frame 0
TX packets 1943 bytes 189310 (184.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@yefeng ~]# ifconfig eth0 promisc
[root@yefeng ~]# ifconfig eth0
eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 192.168.1.111 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fee8:30c8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e8:30:c8 txqueuelen 1000 (Ethernet)
RX packets 19811 bytes 8893559 (8.4 MiB)
RX errors 0 dropped 4 overruns 0 frame 0
TX packets 1964 bytes 191958 (187.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@yefeng ~]# ifconfig eth0 -promisc
[root@yefeng ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.111 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fee8:30c8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e8:30:c8 txqueuelen 1000 (Ethernet)
RX packets 22548 bytes 11118489 (10.6 MiB)
RX errors 0 dropped 5 overruns 0 frame 0
TX packets 1982 bytes 194380 (189.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 

 

 

======================docker===============================

 


docker network inspect nw_128.48.6.0_24
docker network create --driver alinet --ipam-driver=alinet --gateway=128.48.6.247 --ip-range 128.48.6.0/24 --subnet=128.48.6.0/24 --opt nic=docker1 nw_128.48.6.0_24 #创建network
docker run -itd --net=bridge --entrypoint=bash (-e RequestedIP=XXX) --name dockertest01 $IMAGEID #创建docker
docker run -itd --net=bridge --entrypoint=bash -e RequestedIP=128.48.6.1 --name dockertest01 $IMAGEID #创建docker,$IMAGEID是镜像ID

 

docker network ls
docker network inspect aa53084279d1
docker网络和网桥的关联关系可以用这个命令进行查看

[root@yefeng ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
aa53084279d1 bridge bridge local
75a56d44363d host host local
e0755e3c1e24 none null local
[root@yefeng ~]# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.024258421994 no
virbr0 8000.525400574e7a yes virbr0-nic

 

 

docker network create --gateway=128.49.6.247 --ip-range 128.49.6.0/24 --subnet=128.49.6.0/24 --opt nw_128.49.6.0_24

 

 


2个自定义docker网络的区别:1个指定了网桥,另一个未指定网桥
docker network create --gateway=128.48.6.247 --ip-range 128.48.6.0/24 --subnet=128.48.6.0/24 --opt nic=docker1 nw_128.48.6.0_24
docker network create --gateway=128.49.6.247 --ip-range 128.49.6.0/24 --subnet=128.49.6.0/24 nw_128.49.6.0_24

创建容器并运行,自动关联到网桥docker0
docker run -itd --net=bridge --entrypoint=bash -e RequestedIP=128.49.6.2 --name dockertest02 8652b9f0cb4c

docker run -itd --net=bridge --entrypoint=bash -e RequestedIP=128.48.6.4 --name dockertest05 8652b9f0cb4c


--opt nic=docker1 这个没有达到预期啊。。。。新创建的容器都是连接到docker0????????????????

 


docker run -itd --net=nw_128.48.6.0_24 --entrypoint=bash -e RequestedIP=128.50.6.7 --name dockertest07 8652b9f0cb4c

 

man docker
man docker-create
systemctl start docker #开启docker进程后,docker0才被创建出来

posted @   雲淡風輕333  阅读(4847)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示