Linux-讓Kvm虛擬機開放服務端口!
前言
一直都是使用的虛擬機是kvm,而且都習慣用nat網(wǎng)絡模式,但是有時候遇到需要測試一些服務,而且需要測試機訪問kvm虛擬機里面的服務。
這時候有兩種解決方式,一種是使用橋接,一種是使用端口轉(zhuǎn)發(fā)。我更傾向于后者,因為我的虛擬機不需要長時間提供服務,使用nat可以更好的隔離。
橋接
如上圖:
網(wǎng)橋方式配置步驟
1、編輯修改網(wǎng)絡設備腳本文件,增加網(wǎng)橋設備br0
- vim /etc/sysconfig/network-scripts/ifcfg-br0
- DEVICE="br0"
- ONBOOT="yes"
- TYPE="Bridge"
- BOOTPROTO=static
- IPADDR=192.168.123.22
- NETMASK=255.255.255.0
- GATEWAY=192.168.123.1
- DEFROUTE=yes
上述配置將虛擬網(wǎng)卡配置在了192.168.123.* 網(wǎng)段。如果不需要靜態(tài)地址,可以把配置地址的相關項屏蔽。如:
- DEVICE="br0"
- ONBOOT="yes"
- TYPE="Bridge"
- BOOTPROTO=dhcp
2、編輯修改網(wǎng)絡設備腳本文件,修改網(wǎng)卡設備eth0
- vim /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE="eth0"
- NM_CONTROLLED="no"
- ONBOOT="yes"
- TYPE=Ethernet
- BOOTPROTO=none
- BRIDGE="br0"
- NAME="System eth0"
- HWADDR=90:48:9a:1c:09:af
虛擬機機配置
虛擬機安裝時注意,網(wǎng)絡要選擇用br0橋接方式。
圖形化的方式:
文本方式:
編輯修改虛擬機配置文件 /etc/libvirt/qemu/v1.xml,增加如下內(nèi)容
- <interface type='bridge'>
- <mac address='52:54:00:da:c3:dc'/>
- <source bridge='br0'/>
- <model type='virtio'/>
- <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
- </interface>
虛擬機啟動后,驗證網(wǎng)絡接口是否正常:
- brctl show
- bridge name bridge id STP enabled interfaces
- br0 8000.4437e64a62ad no eth0
- vnet0
NAT
默認就有nat支持,需要另外的操作,在圖形操作里面直接選擇nat就可以啦。
服務端口開放
1、橋接的虛擬機直接在,iptables里面開放服務訪問就可以直接訪問了,不需要經(jīng)過宿主機的規(guī)則限制。
2、nat模式,默認所有的端口只是對虛擬機的網(wǎng)段開放而已,如果需要開放端口,就需要設置端口轉(zhuǎn)發(fā),可以利用一些端口轉(zhuǎn)發(fā)工具,也可以直接用iptables。
例子,其中192.168.122.10是我的虛擬機,192.168.122.1是宿主機的IP,需要設置ip_forwad參數(shù)
- iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.122.10:80
- iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.122.1
- echo 1 > /proc/sys/net/ipv4/ip_forward
這樣子,我直接訪問我宿主機的80端口,就會轉(zhuǎn)發(fā)到虛擬機里面的服務了。