2014年12月2日 星期二

建立橋接網路 br10


0. 整體架構圖
我們要將網路規劃為下圖,
由網際網路(Internet) 連到實體機網卡(eth0),
從實體機網卡(eth0) 建立一個橋接網路(br10),
最後將橋接網路連接到 QEMU 虛擬機( 設 192.168.10.20 ),
並在虛擬機上面建個 Web Server !

其中,從實體機到虛擬機可以互相 ping ,
且實體機開瀏灠器可以連到虛擬機架的 Web Server。

1. 使用 runarm.sh 開啟虛擬機
參考文章 用 QEMU 來開機 arm.img
vi runarm.sh
# !/bin/bash
#
# Run arm.img

qemu-system-arm -M versatilepb -m 512 \
-kernel ~qemu_image/vmlinuz-3.2.0-4-versatile \
-initrd ~qemu_image/initrd.img-3.2.0-4-versatile \
-hda ~qemu_image/arm.img \
-append "root=/dev/sda1" &

2. 安裝 Web server
於虛擬機,安機:
sudo apt-get install apache2

虛擬機關機
halt

3. 備份並修改 runarm.sh
cp runarm.sh runarm.sh.org

vi runarm.sh
qemu-system-arm -M versatilepb -m 512 \
-kernel ~qemu_image/vmlinuz-3.2.0-4-versatile \
-initrd ~qemu_image/initrd.img-3.2.0-4-versatile \
-hda ~qemu_image/arm.img \
-net nic,macaddr=" MAC Address " -net bridge,br=br10 \
-append "root=/dev/sda1" &

4. 安裝 bridge 套件
於實體機
sudo apt-get install bridge-utils uml-utilities

5. 編輯設定 br10 (以 P503 教室為例)
於實體機
vi /etc/network/interfaces

## ==== 本機端 lo ====
auto lo
iface lo inet loopback
## ==== 實體網卡 eth0 ====
allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
 address 120.117.72.XX
 netmask 255.255.255.128
 gateway 120.117.72.126
 dns-nameserver 120.117.2.1
## ==== 橋接 br10 ====
auto br10
iface br10 inet static
 address 192.168.10.1
 netmask 255.255.255.0
# 這邊 gateway 是用實體機 eth0 的 ip
 gateway 120.117.72.XX
 bridge_ports tap0
 bridge_fd 9
 bridge_hello 2
 bridge_maxage 12
 bridge_stp off

6. 重啟網卡並確認網路連線
於實體機
/etc/init.d/networking restart
brctl show
ifconfig
ping 192.168.10.1
ping 8.8.8.8

7. 設定 QEMU 設定檔
於實體機
sudo chmod u+s /usr/local/libexec/qemu-bridge-helper

sudo vi /usr/local/etc/qemu/bridge.conf
allow br10

8. 執行修改好的 runarm.sh 重啟虛擬機
於實體機
sh runarm.sh

9. 修改虛擬機網路設定
於虛擬機
vi /etc/network/interfaces
auto lo
iface lo inet loopback
## ==== 虛擬機的 eth0 ====
allow-hotplug eth0
iface eth0 inet static
 address 192.168.10.20
 netmask 255.255.255.0
# 這邊 gateway 要設實體機所建的 br10 之 ip
 gateway 192.168.10.1
# 這邊以學校為例,nameserver 要用同實體機一樣
 dns-nameserver 120.117.2.1

10. 重啟虛擬機網卡並測試
於虛擬機
/etc/init.d/networking restart

測試 br10
ping 192.168.10.1

測試實體機 eth0
ping 120.117.72.XX

啟動 Web Server
/etc/init.d/apache2 restart

11. 至實體機測試
於實體機
ping 192.168.10.20

開啟瀏灠器 -> 192.168.10.20
可以看到 「It's works!!」

12. 設定防火牆,讓虛擬機連到外網
於實體機
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i br10 -j ACCEPT
iptables -t net -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE


















Reference:
http://pominglee.blogspot.tw/2014/12/br10.html

沒有留言:

張貼留言