柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!
全部博文(1669)
分类:
2012-07-17 11:34:33
2011-08-16 23:53:11| 分类: 虚拟化+云计 | 标签: |字号大中小
這幾天在自己電腦上安裝了 fedora 15 除了感受一下 gnome3 嶄新的使用者界面外,
順便也玩一下整合很完整的 KVM,用 dvd 裝完以後有勾選虛擬化,就會把相關軟體一次都裝好了(kvm,qemu,libvirtd…) ,
只要透過虛擬機管理員就可以輕鬆的建立 vm,並且使用了~感覺很愜意呢~
只是想要瞭解他相關網路的設定,好像就沒有很簡單了…原本網路概念就有一點模糊,順便重新整理自己網路的知識…
Linux Networking
Linux 可以當作 Router , Switch(bridge) 來使用,當成 Router 來使用之前遇到的情況是使用
iptables 來建立一個 hdcp+nat 的區域網路,透過一台電腦來 forwarding 一整個內網的封包到另外一個界面,
架設在 vmware 的環境,之前應該有一篇文章有寫過哩~
然後 switch 之前就沒用過了,所以不曉得在 linux 內要怎麼使用,這次順便有學到一點…
Linux bridge
先安裝相關工具再來學…怎麼用~
1
2
3
4 |
# install bridge utils 有指令 brctl 可以用
$ yum install bridge-utils
# install User-mode Linux (utility) 有些工具可以用 主要是 tunctl 可以製作虛擬介面(nic)
$ yum install uml-utilities |
然後就可以開始玩~bridge 了
01
02
03
04
05
06
07
08
09
10
11
12 |
# show all bridge stauts
$ brctl show
# add bridge
$ brctl addbr br0
# add interface to br0
$ brctl addif br0 eth0
$ brctl addif br0 eth1
# remove interfece from br0
$ brctl delif br0 eth0 |
也可以用 tunctl 增加一些 tap(虛擬網卡),用來加進去 bridge ,在真實 KVM 情況就是用這些虛擬網卡來對應 VM 的網卡的。
01
02
03
04
05
06
07
08
09
10
11
12
13 |
# add tap0 and tap1
$ tunctl -t tap0 -u user -g user
$ tunctl -t tap1 -u user -g user
# create bridge and add taps
$ brctl addbr mybr
$ brctl addif mybr tap0
$ brctl addif mybr tap1
# show staus
$ brctl show
bridge name bridge id STP enabled interfaces
mybr 0000.002421e18258 no tap0
tap1 |
ㄜ應該蠻好玩的吧~
然後我建立一個環境來測試一些網路佈署的情況~
我有一個真實的網卡 eth0,有兩台 VM 各有一張網卡,我想要一個可以透過分享實體網卡設定實體IP上網,
另外一台可以透過主機的的 iptables 作 forwarding NAT 上網~
所以我需要兩個 bridge ,一個橋接真實網卡與虛擬網卡,另外一個是純虛擬 bridge 橋接虛擬網卡,
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18 |
# 大略網路資訊
$ ifconfig
eth0
vnet0
vnet1
switch
nat-br
# 建立兩個 bridge
$ brctl addbr switch
$ brctl addbr nat-br
# 把實體網卡跟虛擬網卡榜在一起
$ brctl addif switch eth0
$ brctl addif switch vnet0
# 把 vnet1 加到虛擬 switch 中
$ brctl addif nat-br vnet0 |
然後就讓 libvirtd 位於 /etc/libvirt/qemu/networks/default.xml 的 dhcp 設定檔,
指向 nat-br 這樣 dhcpd 就會往這個介面分配 IP 了,然後再把 iptables 的 forwarding 從 nat-br 指到 switch ,
vnet1 就可以透過 nat 上網了,
另外要讓 vnet1 可以透過實體 IP 上網,要把 eth0 設成混亂模式,當成對內對外的介面,
然後把 switch 設成實際要上網的 ip,這邊概念還不太清楚,但是這樣確定可以運作 libvirt networking[3]也是這樣寫的~
1
2
3 |
$ ifconfig eth0 0.0.0.0 promisc
$ ifconfig switch 123.123.123.123 netmask 255.255.255.0
$ route add default gw 123.123.123.126 |
這樣就能有兩個 bridge,一個區網提供虛擬 IP 讓虛擬機能透過 nat 上網,
另外一個直接跟實體網路銜接,看起來就像跟實體網卡接在同一個 switch 上。
RHEL5.4部署kvm后默认虚拟机联网方式使用nat,可通过手动配置网卡实现桥接(bridge)。 配置桥接网卡br0后物理网卡eth0不需要获得ip地址,其功能被br0取代,因此在配置的时候无论是静态ip还是动态获取都用br0取代eth0,例如桥接前eth0的静态ip是 192.168.0.1那么配置桥接br0的静态ip应为192.168.0.1,而桥接后eth0没有ip。 配置步骤(静态IP): cd /etc/sysconfig/network-scripts/ vi ifcfg-eth0 ---------------- DEVICE=eth0 BOOTPROTO=none ONBOOT=yes BRIDGE=br0 ---------------- vi ifcfg-br0 ---------------- DEVICE=br0 TYPE=Bridge BOOTPROTO=none IPADDR=192.168.0.1 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 ONBOOT=yes --------------- vi /etc/sysctl.conf --------------------------------------- net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 --------------------------------------- iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT services iptables save service network restart sysctl -p services iptables restart service libvirtd reload 检查桥接网络 brctl show ------------------------------------------------------- bridge name bridge id STP enabled interfaces br0 8000.0024549d2950 no eth0 virbr0 8000.000000000000 yes --------------------------------------------------------- 其中br0是我们配置的桥接网卡,virbr0是系统脚本自动配置的NAT网卡。 |