Fish in the river

Techology
  1. Main page
  2. 运维技术
  3. Linux
  4. Main content

在CENTOS7上安装KVM,使用NAT模式,端口映射访问KVM虚拟机

2024年4月13日 195hotness 0likes 0comments

在centos7上 创建的 kvm 虚拟机,如果虚拟网络设置为 NAT 而不是 bridge 的话,从宿主机之外是没有办法直接访问的,只能在宿主机上进行连接。

这样很不方便。有人说为什么不使用bridge网络呢。如果要从宿主机之外的主机直接访问的话。原因是因为,公司只给你分配这一个IP啊。

如果想开放虚拟机的某个服务端口,比如 ssh 或者 http,可以在宿主机上设置 iptables 规则。

步骤如下:

1. 禁用centos主机的防火墙

sudo systemctl stop firewalld

sudo systemctl disable firewalld

2.禁用selinux

2.1打开/etc/selinux/config

2.2找到'SELINUX='行,将它的值设置为'disabled'。

3.允许路由转发(网上很多教程都没有提到这一步)

3.1进入目录/etc/sysctl.d

3.2创建文件00-system.conf

3.3在这个文件中追加一行net.ipv4.ip_forward = 1

3.4重启生效,或者输入命令生效sudo sysctl -p

4.设置iptables规则

需要实现的是,当访问宿主机 (HOST_IP) 的特定端口 (HOST_PORT) 时,转发给指定的虚拟机端口 (GUEST_IP:GUEST_PORT)。

在宿主机上运行以下 iptables 命令:

$ sudo iptables -I FORWARD -o virbr0  -p tcp -d $GUEST_IP --dport $GUEST_PORT -j ACCEPT
$ sudo iptables -t nat -I PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT

举例:
KVM虚拟机的IP地址为192.168.122.162。
开放的端口为122(本来是开放端口22,但是端口22被主机占用了)
需要设置如下两条iptables规则。
sudo iptables -I FORWARD -o virbr0 -d 192.168.122.162 -p tcp --dport 122 -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp --dport 122 -j DNAT --to 192.168.122.162:122

5. 此时可以通过HOST_IP:HOST_PORT访问主机了。
Tag: Linux
Last updated:2024年4月13日

joey

This person is a lazy dog and has left nothing

Like
< Last article
Next article >

Comments

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
Cancel

归档

  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024

分类目录

  • C#
  • Dock
  • Esxi
  • Excel
  • Kindle
  • Linux
  • Windows
  • 生活感悟
  • 群晖
  • 运维技术

COPYRIGHT © 2024 水中小鱼. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang