首页 > 系统相关 >QEMU中虚拟Linux网络配置

QEMU中虚拟Linux网络配置

时间:2024-12-04 11:43:04浏览次数:10  
标签:resolved systemd qemu 虚拟 DNS Linux 8.8 QEMU yukikaze

QEMU中虚拟Linux网络配置

baidu: 只有在ping的时候才想起我,对吗

刚才使用qemu测试驱动的时候,忽然发现ssh不能顺利的接入到虚拟操作系统之中,原以为是物理机资源紧张导致qemu启动变慢,结果摸鱼半天之后依然无法通过ssh访问。使用vnc接入后发现虚拟机无法上网,没有被分配IP地址。

不知道是哪里出了bug,正常来讲不应该出现问题,之前的博文(Link: https://www.cnblogs.com/polariszg/p/18242190)中提到的qemu-ifup脚本应该会自动创建DHCP服务器,并对该虚拟机分配特定的ip地址。

好在手动配置好ip地址后,可以接通网络并使用ssh连接。

操作系统信息

QEMU中虚拟操作系统的信息如下

  1. 版本号:
yukikaze@yukikaze-qemu:/etc/systemd$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy
  1. 网络设备:

在裸机上可能会因为net-tools没有安装所以会麻烦一些,需要访问对应的网络设备,来拿到网络设备的信息,网络设备位于 /sys/class/net/ 路径下,比如在本虚拟Linux中,网络设备仅有ens3

yukikaze@yukikaze-qemu:/sys/class/net/ens3$ ls
addr_assign_type  carrier_down_count  duplex             link_mode             phys_port_id    speed         type
address           carrier_up_count    flags              mtu                   phys_port_name  statistics    uevent
addr_len          device              gro_flush_timeout  name_assign_type      phys_switch_id  subsystem
broadcast         dev_id              ifalias            napi_defer_hard_irqs  power           testing
carrier           dev_port            ifindex            netdev_group          proto_down      threaded
carrier_changes   dormant             iflink             operstate             queues          tx_queue_len

查看设备的mac地址

yukikaze@yukikaze-qemu:/sys/class/net/ens3$ cat address 
52:54:00:12:34:56

在物理机中,可以通过抓包查看该设备是否上线,抓包工具就有很多了,wireshark之类的

手动配置ip地址

这里我们就要复习一下计算机网络的知识。本节中会涉及到L3层的如下信息:

  • ip地址:屏蔽到32bit的mac地址的32bit长或128bit长的一个地址,一般来说我们使用简单的ipv4来进行配置。只有拥有了ip地址,更高层的协议(L4及以上)才能够工作

  • 子网掩码:每个ip地址分为两个部分,网络号和子网编号,ip地址通过和子网掩码进行 运算来得到自己所属的子网

  • 网关及默认网关:同一个子网中的设备是可以互相通信的,这种通信会直接发送至L2层进行封包转发。但若不属于同一子网,则会将网络包发给网关进行处理。网关承载着子网内和子往外的交互功能

    在《wireshark网络分析就是这么简单》这杯书的第一张就提到一道经典的问题,当一台计算机的子网掩码被随机更改后,该计算机还能够自由的连接互联网吗?

  • DNS地址:实际上DNS协议应该就不是在L3层,而是在L4层进行工作。配置好上述参数后,ping命令可以通过写ip地址参数来返回成功,但计算机实际并不能自由的连接互联网。还需要配置DNS解析参数,来保证可以将字符串正确解析为ip地址,来进行L3层的通信。

  1. 前置参数

    img

    你好这是我的千织老婆

    该前置参数来自qemu-ifup脚本对物理机的配置。该脚本会在物理机上建立一个网桥,并将qemu虚拟机连接到该网桥上:

    • 网桥ip地址:192.168.53.1

    • 网桥的子网掩码:255.255.255.0

  2. 配置虚拟机ip地址

    本机使用的网络设备名称是ens3,需要根据实际的场景来更改下述命令的参数

    sudo ip addr add 192.168.53.77/24 dev ens3
    
  3. 配置默认网关

    sudo ip route add default via 192.168.53.1
    
  4. 测试

    此时应该可以通过ping 192.168.53.1来测试网络的连通性,当然也可以通过ping 8.8.8.8来测试互联网的连通性

  5. 持久化

    这个我没有测试,这里就略过,不过可以通过systemd来自动化启动一个脚本

配置DNS解析地址

上述的配置完成后,明明已经接入的互联网高速路,但使用apt update之后依然无法正常更新软件包仓库,这时候需要检查DNS解析服务是否正常启动

  1. 配置DNS解析地址

    配置该地址之前最好ping一下检查是否可以正常访问,不能的话更换国内DNS服务

    sudo resolvectl dns ens3 8.8.8.8 1.1.1.1
    
  2. 持久化

    关于DNS解析地址的持久化有很多种解决方案,可以修改/etc/netplan路径下的yaml文件,也可以修改/etc/systemd路径下的resolved.conf 文件,我这里采用第二种方案。

    1. 首先需要检查resolved服务是否被正常启动, active表示已经启动,没启动的话代表操作系统不是使用该服务提供DNS解析的,需要更换方案,

      yukikaze@yukikaze-qemu:/etc/apt$ systemctl status systemd-resolved
      ● systemd-resolved.service - Network Name Resolution
          Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendor preset: enabled)
          Active: active (running) since Wed 2024-12-04 09:47:50 CST; 18min ago
          Docs: man:systemd-resolved.service(8)
                  man:org.freedesktop.resolve1(5)
                  https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
                  https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
      Main PID: 346 (systemd-resolve)
          Status: "Processing requests..."
          Tasks: 1 (limit: 2271)
          Memory: 9.8M
              CPU: 254ms
          CGroup: /system.slice/systemd-resolved.service
                  └─346 /lib/systemd/systemd-resolved
      
      12月 04 09:47:50 yukikaze-qemu systemd[1]: Starting Network Name Resolution...
      12月 04 09:47:50 yukikaze-qemu systemd-resolved[346]: Positive Trust Anchors:
      12月 04 09:47:50 yukikaze-qemu systemd-resolved[346]: . IN DS 20326 8 2 e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237>
      12月 04 09:47:50 yukikaze-qemu systemd-resolved[346]: Negative trust anchors: home.arpa 10.in-addr.arpa 16.172.in-addr.arpa 17.1>
      12月 04 09:47:50 yukikaze-qemu systemd-resolved[346]: Using system hostname 'yukikaze-qemu'.
      12月 04 09:47:50 yukikaze-qemu systemd[1]: Started Network Name Resolution.
      
    2. 查看当前resolve服务的状态,可以看到并没有配置DNS解析

      yukikaze@yukikaze-qemu:/etc/apt$ resolvectl status
      Global
          Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
      resolv.conf mode: stub
      
      Link 2 (ens3)
      Current Scopes: none
          Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
      
    3. 修改该服务的配置文件/etc/systemd路径下的resolved.conf ,添加两行DNS参数,多个DNS服务器ip地址之间通过空格隔开

      [Resolve]
      DNS=8.8.8.8 1.1.1.1
      FallbackDNS=8.8.4.4 1.0.0.1
      

      之后该文件的内容如下:

      yukikaze@yukikaze-qemu:/etc/systemd$ cat resolved.conf 
      #  This file is part of systemd.
      #
      #  systemd is free software; you can redistribute it and/or modify it under the
      #  terms of the GNU Lesser General Public License as published by the Free
      #  Software Foundation; either version 2.1 of the License, or (at your option)
      #  any later version.
      #
      # Entries in this file show the compile time defaults. Local configuration
      # should be created by either modifying this file, or by creating "drop-ins" in
      # the resolved.conf.d/ subdirectory. The latter is generally recommended.
      # Defaults can be restored by simply deleting this file and all drop-ins.
      #
      # Use 'systemd-analyze cat-config systemd/resolved.conf' to display the full config.
      #
      # See resolved.conf(5) for details.
      
      [Resolve]
      # Some examples of DNS servers which may be used for DNS= and FallbackDNS=:
      # Cloudflare: 1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com
      # Google:     8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
      # Quad9:      9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
      DNS=8.8.8.8 1.1.1.1
      FallbackDNS=8.8.4.4 1.0.0.1
      #Domains=
      #DNSSEC=no
      #DNSOverTLS=no
      #MulticastDNS=no
      #LLMNR=no
      #Cache=no-negative
      #CacheFromLocalhost=no
      #DNSStubListener=yes
      #DNSStubListenerExtra=
      #ReadEtcHosts=yes
      #ResolveUnicastSingleLabel=no
      
    4. 重启服务

      sudo systemctl restart systemd-resolved
      

      查看服务状态

      sudo systemctl status systemd-resolved.service
      

      查看服务的DNS配置情况

      yukikaze@yukikaze-qemu:/etc/systemd$ resolvectl status
      Global
              Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
          resolv.conf mode: stub
              DNS Servers: 8.8.8.8 1.1.1.1
      Fallback DNS Servers: 8.8.4.4 1.0.0.1
      
      Link 2 (ens3)
      Current Scopes: DNS
          Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
      DNS Servers: 8.8.8.8 1.1.1.1
      

以上

标签:resolved,systemd,qemu,虚拟,DNS,Linux,8.8,QEMU,yukikaze
From: https://www.cnblogs.com/polariszg/p/18585738

相关文章

  • 创建配备GPU驱动的GPU云主机(Linux)
    本文为您介绍创建Linux操作系统的GPU计算加速型云主机时,自动安装GPU驱动的详细操作指导。注意目前仅部分资源池支持该功能,若目标资源池不支持该功能,请参见安装Tesla驱动,手动安装GPU驱动。准备工作创建账号,以及完善账号信息。本教程创建的是按量付费实例。开通按量付费GPU云......
  • 本地文件如何上传到Linux云主机
    将本地的文件上传至云主机是用户在使用云主机时的常见操作,本文主要介绍如何将本地文件上传至Linux云主机。Windows系统通过WinSCP方式上传到Linux云主机WinSCP是一个Windows平台上的免费开源的SFTP客户端软件,WinSCP提供图形化界面,通过WinSCP,用户可以连接到远程服务器,并且可以......
  • 在Linux上部署BookStack并实现远程访问
    前言  本文主要介绍如何在Linux系统使用Docker本地部署在线文档管理系统BookStack,并结合cpolar内网穿透工具轻松实现异地远程访问本地搭建的BookStack管理书籍文档。无需公网IP,也不用设置路由器那么麻烦。BookStack是一个开源的、基于Laravel+Vue.js构建的知识管理和服务......
  • VMware虚拟机磁盘扩容
    环境:linux系统:ubuntu1.修改磁盘配置2.在虚拟机内部系统分配空间运行以下命令:sudoaptupdatesudoaptinstallgpartedgparted启动如下界面:sda2右键选择“Resize/Move”freespacefollowing直接输入0,回车确认,数值会自动变成下图的样子应用修改检查是否修改成......
  • Nexpose 7.0.0 for Linux & Windows - 漏洞扫描
    Nexpose7.0.0forLinux&Windows-漏洞扫描Rapid7on-premVulnerabilityManagement,releasedDec03,2024请访问原文链接:https://sysin.org/blog/nexpose-7/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgNexposeVulnerabilityScanner您的本地漏洞扫......
  • 【坑记录】linux 输出中文乱码问题
    1、现象:1)上传shell脚本到centos7系统运行后,脚本中echo输出内容到文件,不管是cat或者vim打开文件,中文都是乱码,如下图:2、排查1)怀疑系统编码和文件编码不一致导致显示乱码。系统编码,经过查看,如下:文件编码,经过查看,如下:确实是编码不一致导致。2)系统编码已经是utf-8,但是文件编......
  • Linux内存布局
    目录在linux中,每一个进程都被抽象为task_struct结构体,称为进程描述符,存储着进程各方面的信息;例如打开的文件,信号以及内存等等;然后task_struct的一个属性mm_struct管理着进程的所有虚拟内存,称为内存描述符。在mm_struct结构体中,存储着进程各个内存段的开始以及结尾,如下图所示;这......
  • ssh远程连接linux服务器
    ssh远程连接linux服务器一、linux端配置1、安装ssh服务sudoapt-getupdatesudoapt-getinstallopenssh-clientsudoapt-getinstallopenssh-server2、启动sshservicesshstart3、检查是否成功启动sshps-e|grepssh确保出现ssh-agent,若无ssh-agent,执行下......
  • 1.8$/月美国VPS虚拟主机购买教程
    最近发现一家非常便宜的美国VPS服务商,经过试用,体验不错,性价比非常高。只需要1.8$/月(支持支付宝支付)就可以购买一台1核1G30G硬盘的虚拟主机,每月有1TB的流量,还有一个外网IPv4地址,绝对是你能找到的最便宜的VPS。至于VPS能用来做什么,可以搜索一下,绝对会有惊喜。接下来就介绍一下怎......
  • [Linux]管道
    管道进程间通信通信目的数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行,此时控制......