KVM虛擬機使用NAT+iptables做端口映射


環境介紹

有一個KVM宿主機,一個外網IP綁定在了宿主服務器上,但是希望直接用ssh訪問上面的所有虛擬機,還想虛擬機提供外網服務,

解決方法如下:

環境為RHEL6.3,外網IP為 61.155.xx.xxx

1.網絡方式使用NAT連接

修改配置文件/etc/libvirt/qemu/networks/default.xml;
查看網絡配置文件,下面的是默認情況
# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254005aa781 yes virbr0-nic

如果需要修改的話,可以直接修改或者創建新的文件,然后使用下面命令來創建新的網絡

virsh net-define 【filename】

2.安裝VM

virt-install --name linux-nat --ram 2048 --disk /data/linux.nat.raw --graphics vnc,port=5902 --network network=default,model=virtio--vcpus=8--os-variant=rhel6 --import

# /data/linux.nat.raw 這個是做好的Linux系統模版

3.查看宿主服務器virbr0的網卡信息

ifconfig virbr0
virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 52:54:00:5a:a7:81 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

進入虛擬機中,修改IP為192.168.122.2,網關為192.168.122.1

4.配置iptables

實現的原理是用戶訪問宿主IP的8000端口,然后iptables轉發這個包到虛擬機的22端口上
# iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
# iptables -t nat -A PREROUTING -d 61.155.xx.xxx  -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.122.2:22 # iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.2 -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.122.1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM