虛擬網卡對外溝通的問題 - Linux

Andrew avatar
By Andrew
at 2009-06-28T12:04

Table of Contents

各位好,

我想問的問題是,如果一張實體網卡下面的虛擬網介面直接對外丟封包的時候,
封包會經過實體網卡被送到外部去嗎?

更詳細的描述如下:

我有一張實體網卡eth0,
在eth0下面長了兩張虛擬網卡veth0/veth1,
在veth1下面又長了一張支援VLAN的虛擬網卡veth1.11,
其中eth0與veth0存在於同一個網路空間,
veth1與veth1.11存在於另外一個獨立的網路空間,做法如下:
[CODE]
1. 開啟兩個shell(shell-1 & shell0-2)
2. 在shell-1中輸入ip link add type veth,這樣會建立veth0 & veth1
3. 在shell-2中輸入./ns_exec -nm -- /bin/bash,將網路空間獨立出來,
這時候執行ifconfig -a將看不到任何網卡
4. 在shell-2中輸入echo $$,取得shell-2的PID
5. 在shell-1中輸入ip link set veth1 netns [第二個shell的PID],
將veth1分配給網路空間獨立後的shell-2使用
6. 在shell-2中輸入vconfig add veth1 11,建立支援VLAN的虛擬網卡
ps. 輸入git clone git://git.sr71.net/~hallyn/cr_tests.git可以取得ns_exec的
原始碼
[/CODE]
網路設置如下:
[CODE]
+--NS1---+ +-NS2-+ +-------------+ +---------------+
|veth1.11| | eth0|---|Switch/Router|---|其他PC/Server @|
| veth1|---|veth0| +-------------+ |10.0.0.x/24 |
+--------+ +-----+ +---------------+
[/CODE]
IP設置如下:
[CODE]
+----- NS1 ---------------------
veth1 --> 192.168.0.101/24
veth1.11 --> 10.0.0.101/24
+-------------------------------

+----- NS2 ---------------------
eth0 --> 192.168.19.148/24
veth0 --> 192.168.0.100/24
+-------------------------------
[/CODE]
Route設置如下:
[CODE]
+----- NS1 ---------------------
192.168.0.0/24 dev veth1 proto kernel scope link src 192.168.0.101
10.0.0.0/8 dev veth1.11 proto kernel scope link src 10.0.0.101
+-------------------------------

+----- NS2 ---------------------
[root@vmf11 ~]# ip route
192.168.19.0/24 dev eth0 proto kernel scope link src 192.168.19.148 metric 1
192.168.0.0/24 dev veth0 proto kernel scope link src 192.168.0.100
default via 192.168.19.2 dev eth0 proto static
+-------------------------------
[/CODE]
[b][color=red]如果今天NS1發出封包給NS2,直接由veth0被往外丟而沒有經過eth0,
也就是說用tcpdump看eth0與veth0時,只有veth0有反應,
那麼,這些直接從veth0被丟出來的封包會在Switch/Router上出現,
然後被送到其他PC/Server上嗎?[/color][/b]

操作過程如下:
[CODE]
+----- NS1 ---------------------
[root@vmf11 MRG]# ping 10.0.0.10
PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.
+-------------------------------

+----- NS2 ---------------------
[root@vmf11 ~]# tcpdump -ne -i veth0 not port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:56:36.797332 da:03:74:87:9c:af > Broadcast, ethertype 802.1Q (0x8100), length 46: vlan 11, p 0, ethertype ARP, arp who-has 10.0.0.10 tell 10.0.0.101
11:56:37.799290 da:03:74:87:9c:af > Broadcast, ethertype 802.1Q (0x8100), length 46: vlan 11, p 0, ethertype ARP, arp who-has 10.0.0.10 tell 10.0.0.101

[root@vmf11 ~]# tcpdump -ne -i eth0 not port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
+-------------------------------
[/CODE]

--
=====================================
| James aka. taco -- |
| War doesn't determine who's right,|
| just who's left. |
| Same to LIFE...?! |
=====================================

--
Tags: Linux

All Comments

UBUNTU插耳機->喇叭跟耳機同時有聲音

Skylar Davis avatar
By Skylar Davis
at 2009-06-28T00:44
插上耳機後,喇叭跟耳機同時會有聲音,拜了GOOLE大神 and#34;大神曰:把其他MASTER音道關掉就可以了and#34;,但是我把 MASTER關掉後變成全部靜音,弄了一個晚上了不知道該如 何是好!? 請問大大們有何高招,肯請賜教謝謝 andlt;(_ _)andgt; OS:ubnutu 9 ...

Ubuntu灌wireshark...

Skylar DavisLinda avatar
By Skylar DavisLinda
at 2009-06-27T21:52
請問該怎麼灌呢? 小弟輸入了sudo apt-get install wireshark之後,跳出確認安裝的訊息 確認之後卻出現了驗證失敗...問我要不要繼續安裝 選是之後就出現以下錯誤訊息: 錯誤 http://security.ubuntu.com gutsy-security/universe ...

有人用ubuntu結果造成顯卡壞掉嗎?

Faithe avatar
By Faithe
at 2009-06-27T20:24
我是用Dell M1330 顯示晶片是Nvidia 8400M GS 結果用ubuntu半年內顯卡掛掉兩次,工程師是把整個主機板換掉 後來同事也說有朋友也有遇過類似的問題,顯卡就整個掛掉 是不是Nvidia的產品有問題?看之前的文章好像也有類似的經驗 那不就代表我的電腦不能灌ubuntu? 有沒有人 ...

KDE 4.2 吃資源比 4.1 兇嗎?兼問 Linu …

Necoo avatar
By Necoo
at 2009-06-27T11:34
※ 引述《Franklin.bbsatbbs.sayya.org (See U next time)》之銘言: : ※ 引述《MilchFlasche.bbsatptt.cc (實踐才能發光)》之銘言: : 我強烈懷疑是 driver 或 X.org 改壞了 : 家裡一台用 nvidia 的獨立顯卡,nvid ...

編譯核心方法及步驟 解決已知問題的方法

Candice avatar
By Candice
at 2009-06-27T09:54
※ 引述《HiJimmy (兩支理性的木魚)》之銘言: : OS:CentOS 5.3 : 下載linux-2.6.30.tar.bz2到/usr/src 老實說,何不下載centos的kernel srpm包來編譯? 這樣省事很多,只要改改config再build rpm即可 畢竟每個distro都對ke ...