2014年10月8日 星期三

Bridge 建立橋接網路 (還有缺,待補中)


1. 安裝套件

sudo apt-get install bridge-utils uml-utilities


2. 常用brctl 橋接指令,需要root權限

brctl help
brctl show
brctl addbr [Bridge Name]
brctl addif [Interface Name]
brctl delbr [Bridge Name]
brctl delif [Interface Name]


3. 建立橋接網路br0

sudo brctl addbr br0

4. 將 br0 橋接給 eth0 使用

sudo brctl addif br0 eth0

5.設定網路

sudo vi /etc/network/interfaces
## 說明
# 
#                 ->  eth0 -> 實體機
# Internet -> br0 ->
#                 ->  br1 -> N 個虛擬機
# 

# The loopback network interface
auto lo
iface lo inet loopback

iface eth0 inet manual
## interent -> br0 -> eth0 -> 實體機
auto br0
iface br0 inet static
       address [本機 ip]
       netmask [本機 netmask]
       gateway [本機 gateway]
       bridge_ports eth0
       bridge_fd 9
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off

## interent -> br0 ->  br1 -> 虛擬機
auto br1
iface br1 inet static
       address 192.168.1.1
       netmask 255.255.255.0
       gateway [本機 ip]
       bridge_ports tap0
       bridge_fd 9
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off 

6. 重啟動網路

ifconfig eth0 down
ifconfig eth0 up
/etc/init.d/netwroking restart

7. 查看網路連線

ifconfig
route -n
ping gateway
ping 8.8.8.8

8. 設定防火牆 iptables (ROOT)


echo 1 > /proc/sys/net/ipv4/ip_forward


### 下面的 br1 要看上面連虛擬機的 Bridge 設多少
iptables -A INPUT -i br1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

9. 開啟 DHCP 服務

可以參考文章 DHCP Server 來安裝設定。

10. 開虛擬機連上網路

下面的 OS.img 檔案,可以參考文章
建立一個 arm.img 並且可以用虛擬機開機 來建立!


qemu-system-x86_64 -enable-kvm \
-cpu host \
-smp 4 \
-m 6000 \
-hda OS.img \
-boot c \
-net nic \
-net bridge,br=br1 &

------------------- Debug -------------------
# Question 1
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
qemu: could not load PC BIOS 'bios.bin'

#  Solution 1
sudo apt-get install seabios
sudo cd /usr/local/share/qemu
sudo ln -sf /usr/share/seabios/*.bin .

-----------------------------------------------------------------------------
# Question 2
failed to create tun device: Operation not permitted
failed to launch bridge helper
qemu-system-x86_64: -net bridge,br=br10: Device 'bridge' could not be initialized

qemu-bridge-helper 需要有 root 的權限才能執行

# Solution 2
chmod u+s /usr/local/libexec/qemu-bridge-helper

------------------------------------------------------------------------------
# Question 3
failed to initialize KVM: No such file or directory
Back to tcg accelerator.

# Solution 3
忘了…

-------------------------------------------------------------------
# Question 4
failed to parse default acl file `/usr/local/etc/qemu/bridge.conf'
failed to launch bridge helper

# Solution 4
vi /usr/local/etc/qemu/bridge.conf -> allow br1

---------------------------------------------------------------------
# Question 5
Could not access KVM kernel module: Permission denied
failed to initialize KVM: Permission denied

# Solution 5
建立 kvm 群組:
groupadd kvm

將自己的使用者 $USER 加到 kvm 群組中:
usermod -a -G kvm $USER

調整 /dev/kvm 使用者權限
chown root:kvm /dev/kvm
chmod 660 /dev/kvm

重新載入 kvm 驅動模組
rmmod kvm_intel kvm
modprobe kvm_intel kvm


# 如果還是不行,就請重新開機再試試
shutdown -r now

---------------------------------------------------------------------
# Question 6
qemu-system-x86_64: symbol lookup error: qemu-system-x86_64: undefined symbol: libusb_get_port_numbers

# Solution 6
先確認 libusb-1.0 有無安裝,版本對不對,再做以下指令重新連結:
sudo ln -sf /lib/x86_64-linux-gnu/libusb-1.0.so.0 /usr/local/lib/libusb-1.0.so.0





沒有留言:

張貼留言