為了宿主機和虛擬機可以很好的通信,當然是選擇橋接網絡啦!!!
話不多說
===========================配置橋接網絡==========================
虛擬機雖然能夠上網了,但是宿主機並不能與虛擬機通信,這給開發調試帶來了很多的困難。我們希望的是,可以用ssh連上虛擬機。這就要求虛擬機就像一台物理機一樣,與宿主機存在於同一個網段內。
首先,在宿主機上,安裝必要的工具(為了tunctl命令):
以下命令均是在su下進行若是認證失敗,請輸入sudo passwd root 進行密碼更新重新進入su
apt-get install uml-utilities
接着,創建一張虛擬TUN網卡:
tunctl -t tap0 -u lfc
這里的lfc換成你的Linux用戶名。然后,將網卡設置為任何人都有權限使用:
chmod 0666 /dev/net/tun
之后,為tap0網卡設置一個IP地址,不要與真實的IP地址在同一個網段。比如我的真實IP地址是192.168.1.2(輸入ifconfig -a 查看),那么我就給tap0設置192.168.2.1:
ifconfig tap0 192.168.2.1 up
宿主機需要為虛擬機開啟IP數據包轉發,即在192.168.1.*網段和192.168.2.*網段轉發數據:
echo 1 > /proc/sys/net/ipv4/ip_forward #可能sudo也會權限不夠,在su以后執行即可 iptables -t nat -A POSTROUTING -j MASQUERADE
宿主機的配置到此結束。
然后啟動虛擬機
有圖形的直接進去,沒有的命令進去。
進入虛擬機以后:
ifconfig -a

可以看到ens3網卡,但是沒有啟用。給它配置一個IP地址,比如192.168.2.2,只有與宿主機的tap0網卡在同一網段即可:
ifconfig ens3 192.168.2.2 up
注:若是其他名稱就改為相應的名稱,若是已經啟動了,就是有了相應的ip地址,則不需要進行這一步(配置ip地址這一步)
之后就能發現,宿主機與虛擬機可以相互ping通了!但是此時,虛擬機還不能上外網,因為虛擬機缺少網關。現在把虛擬機的tap0的地址,192.168.2.1,設置為虛擬機的網關:
route add default gw 192.168.2.1
上面這步可以不做!!!!
這樣,也可以ping通外網了,比如ping 115.239.211.112。但是ping www.baidu.com卻不行,因為缺少DNS服務器!現在就把8.8.8.8指定為虛擬機的DNS服務器:
vim /etc/resolv.conf
若是需要apt-get install vim 卻發現下載不了 可以用 vi /etc/resolv.conf
盡管文件警告說不要手工編輯,但是我臨時用用也就無所謂,追加一行:
nameserver 8.8.8.8

寫入文件之后,DNS立即生效了。現在,虛擬機既能上外網,又能與宿主機通信了


感謝博主
https://zhoujianshi.github.io/articles/2018/%E5%AE%89%E8%A3%85qemu-kvm%E4%BB%A5%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%A1%A5%E6%8E%A5%E7%BD%91%E7%BB%9C/index.html
的分享
