配置網橋
- 在host上查看可用網絡資源
ifconfig
有enp0s31f6、enp3s0u2c4i2、lo 3個網絡資源。
lo用於網絡自回環的,不管
enp0s31f6是連接公司網的,但是公司linux無法上網,不管
enp3s0u2c4i2連接着我的手機,可以上網,因此使用該eth配置網橋模式。
- 建立網橋
sudo su
# 安裝網橋工具
apt-get install bridge-utils
brctl addbr br0
brctl addif br0 enp3s0u2c4i2
brctl stp br0 on
ifconfig enp3s0u2c4i2 0
dhclient br0
route
記住這個子網掩碼和網關,需要對guest進行同樣的配置。
- 以特定選項啟動虛擬機
# 網絡選項為-net nic -net tap,ifname=tap1,即生成一個給guest使用的TAP,連接到br0上
# 其實應該設置qemu-ifup和qemu-ifdown腳本,但是考慮到會默認使用/etc下的這兩個腳本,這里不特殊設置
qemu-system-x86_64 -m 2048 -smp 4 -hda kvm-study.img -enable-kvm -net nic -net tap,ifname=tap1
-
編輯guest網絡配置
如果在guest中使用ifconfig發現guest已經和host處於同意IP段,則省略以下配置,應該可以立即互相ping通
因為我使用的guest是ubuntu18.04 server,網絡設置在/etc/netplan/50-cloud-init.yaml文件中,因此在guest中編輯該文件,更早版本的linux可能在/etc/network/interfaces文件中,一個一個來。
4.1 如果為ubuntu18.04或其他使用netplan作為網絡配置的系統,則
其中ens3可以通過在guest中執行ifconfig
指令獲取除lo之外的網絡資源名稱。
addressses中的28為子網掩碼,即32bit的子網掩碼前28bit為1,正好為255.255.255.240,與host的子網掩碼相同。因此需要設置為28。
addresses中的172.20.10.14為guest的ip地址,這里可以設置的值從172.20.10.1-172.20.10.15,但是不能設置為.3,因為host為.3。
gateway4與host相同。
其它與圖示相同即可。
4.2 如果使用的是ifupdown工具配置的網絡,那么需要修改/etc/network/interfaces
sudo vim /etc/network/interfaces
然后將內容修改為以下形式
注意address就是guest的IP
netmask為子網掩碼
dns-nameservers是dns
保存退出后無需執行5中的netplan apply
- 保存退出后在guest中執行以下命令
sudo netplan apply
sudo systemctl restart network-online.target
之后就可以用ifconfig
看到guest的ip和host同域了。互相之間ping也ping得通。
host和guest之間的文件傳輸
- host向guest傳送文件
scp 待傳輸文件路徑 username@guest的ip地址:需要放置到guest的位置
2. host從guest下載文件
```
scp username@guest的ip地址:需要下載的文件在guest中的路徑 host中要下載到的位置