Fish in the river

思考 技术
记录 回忆
Linux

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

在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访问主机了。

2024年4月13日 0comments 108hotness 0likes joey Read all

近期文章

  • 你得到了什么
  • 激活windows和Windows
  • 自建KMS_SERVER激活Windows 11
  • 数据透视表
  • EXCEL 折线图 X轴显示的位置

近期评论

No comments to show.

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

Theme Kratos Made By Seaton Jiang