關於在通過virtualbox虛擬的xp中運行的代理軟體上網的問題
我是教育網用戶,之前一直用xp,由於要上外網,所以買了個付費的代理
現在因為工作需要要遷移到linux下面,但是那個代理軟體沒有Linux版
我起初想通過在linux中用virtualbox虛擬一個xp,然後再這個虛擬機中運行這個代理軟體,再通過將linux的代理地址設置為虛擬機來實現上外網
但是virtualbox本身提供的虛擬機與宿主機通信的方式不是很多,用nat方式的話宿主機連接不到虛擬機,不過在這種方式下虛擬機可以運行代理軟體
我按照網路上的教程設置了橋接的方式,但是設置完之後,不知道為什麼,虛擬機上不了網了
可能是我設置得有問題
我現在上網是通過一個固定ip上網的,需要制定網關和dns
在橋接的方式中,我把虛擬機的ip設置為同一個網段的,網關與dns則與宿主機一樣
請問這種情況怎麼解決?或者說通過虛擬機中的代理軟體上外網這種想法是否可行?
謝謝!
《解決方案》
回復 #1 chenqingzhi 的帖子
你的linux host主機是ubuntu么
可以參考下面的設置
假設Host系統是Ubuntu 7.04,Guest系統是CentOS 5.0,其他Linux類系統的配置應該與此類似。
首先確保安裝了網橋工具(bridge-utils)和用戶模式Linux工具(uml-utilities),如果沒有可運行如下命令安裝:
# apt-get install bridge-utils uml-utilities
並確保普通用戶可訪問虛擬網卡設備,
# chmod 0666 /dev/net/tun
1. NAT方式
VirtualBox軟體在內部虛擬出NAT網路,該網路在Host系統不可見,更不可配置,Guest系統設置DHCP方式獲取網路地址,即可直接訪問Host網路。
需要注意的是啟動Guest系統之前必須確保網路是連通的,否則Guest系統起來后無法訪問Host系統後來連通的網路,比如ADSL撥號上網。
2. 路由方式
首先給Host系統創建一塊虛擬網卡,
# tunctl -t vb0 -u marchday
網卡的名稱是vb0,授權使用的用戶是marchday。
然後創建Guest,指定Host Interface,並指定Host Interface Name為vb0,即上面我們創建的虛擬網卡。Guest系統啟動后其網卡相當於和vb0相連,然後我們就可以分別配置Host和Guest的網卡,使其 可相互連通,並使Guest系統訪問外部網路。
需要注意的是一塊虛擬網卡同時只能連接一個Guest系統,如果你同時啟動了好幾個Guest系統,需要為每個Guest創建虛擬網卡。
3. 橋接方式
網橋工作在TCP/IP的第二層,數據鏈路層。它只能感知MAC地址,對IP及以上層是無法感知的。你可以把網橋想象成交換機,一般情況下有兩個 口,數據在兩個口之間轉發,Linux下的橋接設備可以加入很多介面,真正地像一個多口的交換機,而且還支持STP( spanning tree protocol )。
在Linux下,網橋介面和第一個加入的介面MAC地址保持一致。
這裡我們考慮兩種結構的網路拓撲。
3.1 Guest系統的網卡直接和公司區域網相連
假設 Host系統的 eth0 和公司區域網相連,通過dhcp獲取IP地址,並通過區域網接入Internet。在這種網路拓撲下,Guest系統的網卡相當於直接接入公司的區域網,這種接入是通過橋接實現的,我們看看怎麼做。
添加虛擬網卡介面
# tunctl -t vb01 -u marchday
添加網橋設備介面
# brctl addbr br0
把物理網卡eth0配置為promisc模式
# ifconfig eth0 0.0.0.0 promisc
把物理網卡eth0加入網橋
# brctl addif br0 eth0
獲取網橋設備的IP地址
# dhclient br0
把虛擬網卡加入網橋
# brctl addif br0 vb01
激活虛擬網卡
# ifconfig vb01 up
這是最快捷的虛擬機上網方式,啟動虛擬機就跟啟動區域網的一台物理機器一樣,馬上就可以獲取IP地址上網。
3.2 Guest系統的網卡和網橋設備相連,配置路由接入區域網
有時候你並不想把虛擬機暴露給區域網,可以把若干台虛擬機加入某個網橋,通過網橋介面配置路由和區域網連接。
添加虛擬網卡介面
# tunctl -t vb01 -u marchday
添加網橋設備介面
# brctl addbr br0
配置網橋的IP地址
# ifconfig br0 10.0.0.1 netmask 255.255.255.0
添加主機到虛擬機的路由
# route add -net 10.0.0.0/24 dev br0
把虛擬網卡加入網橋
# brctl addif br0 vb01
激活虛擬網卡
# ifconfig vb01 up
啟動虛擬機后,配置Guest系統的網卡與br0網段一致,就可以和Host系統通信了,如要上網還的配置NAT。
INTIF="br0"
EXTIF="eth0"
echo 1 > /proc/sys/net/ipv4/ip_forward
# clear existing iptable rules, set a default policy
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
# set forwarding and nat rules
iptables -A FORWARD -i $EXTIF -o $INTIF -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
加入網橋的Host介面沒必要配置IP地址,當然配置也沒錯,不過是多餘的,浪費。
通過網橋和VirtualBox可實現複雜的網路拓撲,以後做相關實驗時再玩玩。