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才被創建出來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM