首页 > 其他分享 >KVM 虚拟机 配置 NAT 连接方式上网

KVM 虚拟机 配置 NAT 连接方式上网

时间:2022-11-16 21:03:21浏览次数:45  
标签:24 -- 0.0 虚拟机 KVM 192.168 ACCEPT NAT 77.0


1、命令行安装方式 

virt-install \
--name=kvm99 --ram 1024 --vcpus=1 \
--disk path=/home/vms/kvm99.qcow2,size=10,format=qcow2,bus=virtio \
--location=/mnt/CentOS-7-x86_64-Minimal-1611.iso --network network=default,model=virtio \
--graphics=none --console=pty,target_type=serial \
--extra-args="console=tty0 console=ttyS0"

--network network=default      配置网络使用默认,NAT 方式

dnsmasq 服务

libvirt默认使用了一个名为default的nat网络,这个网络默认使用virbr0作为桥接接口,使用dnsmasq来为使用nat网络的虚拟机提供dns及dhcp服务,dnsmasq生效后的配置文件默认保存在以下路径:

/var/lib/libvirt/dnsmasq/default.hostsfile   mac&&ip绑定的配置文件

/var/lib/libvirt/dnsmasq/default.leases  dhcp分配到虚拟机的ip地址列表

/var/lib/libvirt/network/default.xml  default网络的配置文件

dnsmasq服务的启动脚本在/etc/init.d/dnsmasq ,但是我们如果手动使用此脚本来启动服务将会导致dnsmasq读取其自己的配置文件来启动此服务,因此这么做是不推荐的,因为这个服务完全由libvirtd在接管,

当libvirtd服务启动的时候,它会将它管理的被标记为autostart的network一并启动起来,而启动network的时候就会自动调用dnsmasq并赋予其适宜的配置文件来运行服务。

使用libvirt管理的网络都会用到dnsmasq来产生相应的配置,比如定义了一个名为route110的network,那么这个route110将使用一个新的桥接接口virbr1来接入网络,并使用dnsmasq产生名为route110.hostsfile和route110.leases的配置文件。

其实这里提到的virbr0和virbr1都是libvirt产生的虚拟网卡,其作用就相当于一个虚拟交换机,为虚拟机提供网络转发服务。

2、安装完成后,修改网段,也可以用默认网段 192.168.122.0/24

virsh net-edit default

<network>
  <name>default</name>
  <uuid>5e3af757-8a76-4fe1-af65-3352b68e23f6</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:b1:22:d8'/>
  <ip address='192.168.77.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.77.2' end='192.168.77.254'/>
    </dhcp>
  </ip>
</network>

# 安装好 libvirtd 后,默认会安装一块 virbr0 的虚拟网卡,网段为 192.168.122.0/24

 3、重新定义 

virsh net-define /etc/libvirt/qemu/networks/default.xml

4、停止 网卡

virsh net-destroy default

5、启动网卡 

virsh net-start default

6、重启 libvirtd

systemctl restart libvirtd

7、虚拟机配置 网卡

# 设置IP,其它参数已省略
…………
IPADDR=192.168.77.6
NETMASK=255.255.255.0
GATEWAY=192.168.77.1
DNS1=8.8.8.8

8、宿主机 查看 iptables

iptables -t nat -nL

# 显示
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
RETURN all -- 192.168.77.0/24 224.0.0.0/24
RETURN all -- 192.168.77.0/24 255.255.255.255
MASQUERADE tcp -- 192.168.77.0/24 !192.168.77.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.77.0/24 !192.168.77.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.77.0/24 !192.168.77.0/24


iptables -t filter -nL

# 显示
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 192.168.77.0/24 ctstate RELATED,ESTABLISHED
ACCEPT all -- 192.168.77.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:68

从上面防火墙可以看出, 在启动 libvirtd 网卡的时候,会动态生成 iptables nat,filter 表,以实现 SNAT 功能,虚拟机可以访问外网。因为没有保存,如果重启 iptables 会全部丢失,接下来我们重新启动 iptables 来手动配置 SNAT 功能

重启 iptables 后 虚拟机就不能上网了 

systemctl restart iptables

 配置 SNAT 转发功能,实现虚拟机通过 宿主机 来上网

vim /etc/sysctl.conf

# 加入
net.ipv4.ip_forward = 1

# 立退生效
sysctl –p

# 清空规则链
iptables -F

# 方法一 有固定IP 这里指宿主机 192.168.1.73
iptables -t nat -A POSTROUTING -s 192.168.77.0/24 -j SNAT --to-source 192.168.1.73

# 方法二 如果没有固定IP
iptables -t nat -A POSTROUTING -s 192.168.77.0/24 -j MASQUERADE

通过上面配置,这里虚拟机就可以上网了,也可以访问 192.168.1.0/24 网段的主机了,但是  192.168.1.0/24 网段的主机是不能访问 虚拟机 192.168.77.6,这时可以通过 端口映射来实现这个功能

宿主机   外网  192.168.1.73    内网  192.168.77.1 (这里就是生成的virbr0 虚拟网卡)

虚拟机            192.168.77.6

其它主机         192.168.1.86   (跟宿主机在一个网段)

实现 192.168.1.86 通过 访问 192.168.1.73 8802 端口 来实现 登陆 192.168.77.66 22 端口

配置 端口 映射功能,实现 192.168.1.0/24 网段主机 远程登陆 192.168.77.6

iptables -t nat -A PREROUTING -d 192.168.1.73 -p tcp -m tcp --dport 8022 -j DNAT --to-destination 192.168.77.6:22

保存生效

service iptables save

这时找一台 192.168.1.0/24 网段的主机 我这里是 192.168.1.86,进行访问

telnet 192.168.1.73 8022

# 成功
Trying 192.168.1.73...
Connected to 192.168.1.73.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1

接下来配置 宿主机 filter 表防火墙 

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0] # 转发功能要打开
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
COMMIT

 

 

标签:24,--,0.0,虚拟机,KVM,192.168,ACCEPT,NAT,77.0
From: https://blog.51cto.com/u_14508118/5857678

相关文章

  • LVS负载均衡集群——NAT部署
    一、企业群集应用概述1、群集的含义•Cluster、集群、群集•由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机2、问题及......
  • LVS负载均衡集群——NAT部署
    一、企业群集应用概述1、群集的含义•Cluster、集群、群集•由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机2、问题及......
  • Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo can
    项目启动时报错:Causedby:org.hibernate.HibernateException:AccesstoDialectResolutionInfocannotbenullwhen'hibernate.dialect'notset 正常情况下,如果不......
  • centos7磁盘扩容(VM虚拟机操作)
    添加磁盘并使用命令查看1.添加一块20G的磁盘2.使用lsblk命令查看添加的磁盘3.查看当前虚拟磁盘4.查看当前磁盘分区表5.使用命令fdisk/dev/sdb对磁盘......
  • 虚拟机VMWare+Linux系统CentOS7安装【Linux】
    Linux​​Linux​​​​联网​​​​pinyin输入法​​​​快照的使用​​​​gcc​​​​测试gcc​​​​测试g++​​​​高版本的gcc​​Linux安装VMWare​​【Linux入门......
  • NTMFS4C810NAT3G场效应管30V NCH,DEC1515H-D0-I/Z2集成电路TQFP
    产品参数1、型号:DEC1515H-D0-I/Z2封装:TQFP128批次:新年份2、型号:NTMFS4C810NAT3GFET类型:N通道技术:MOSFET(金属氧化物)漏源电压(Vdss):30V25°C时电流-连续漏极(Id):8.2A(Ta......
  • VMware中虚拟机仅主机和nat双网卡之后上不了网
    VMware-workstation中的一个双网卡虚拟机,第一张网卡为仅主机模式,第二张网卡为nat模式。在网络配置都正确的情况下虚拟机依然访问不了互联网。经过多方面查证之后,是VMware......
  • Linux——虚拟机如何连接XShell
    目录一、检查虚拟机设置的网络连接是否为NAT模式二、虚拟网络编辑器中查看IP地址三、设置虚拟机的IP地址,子网掩码,网关,DNS四、XSell中连接虚拟机五、总结一、检查虚拟......
  • 三秒让你学会公私网地址转换(NAT)
    NAT网络地址转换一.NAT定义二.华为Ensp拓扑图三.代码(动态NAT) 一.NAT定义NAT(NetworkAddressTranslasion) 又称网络地址转换,用于实现私有网络和公有网络之间的......
  • 虚拟机的端口映射
    增加一个端口映射netshinterfaceportproxyaddv4tov4listenport=2022listenaddress=10.191.21.96connectaddress=172.24.177.31connectport=22netshinterface......