Files
server/usr/share/doc/qemu-system-common/system/devices/net.html
2026-01-07 20:52:11 +01:00

271 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Network emulation &mdash; QEMU Debian 1:8.2.2+ds-0ubuntu1.11 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=86f27845" />
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=08e6c168" />
<link rel="shortcut icon" href="../../_static/qemu_32x32.png"/>
<script src="../../_static/jquery.js?v=8dae8fb0"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=802af9f6"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/custom.js?v=2ab9f71d"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="NVMe Emulation" href="nvme.html" />
<link rel="prev" title="Sparc32 keyboard" href="keyboard.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #802400" >
<a href="../../index.html" class="icon icon-home">
QEMU
<img src="../../_static/qemu_128x128.png" class="logo" alt="Logo"/>
</a>
<div class="version">
8.2.2
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../about/index.html">About QEMU</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">System Emulation</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../invocation.html">Invocation</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../device-emulation.html">Device Emulation</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../device-emulation.html#common-terms">Common Terms</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../device-emulation.html#emulated-devices">Emulated Devices</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="can.html">CAN Bus Emulation Support</a></li>
<li class="toctree-l4"><a class="reference internal" href="ccid.html">Chip Card Interface Device (CCID)</a></li>
<li class="toctree-l4"><a class="reference internal" href="cxl.html">Compute Express Link (CXL)</a></li>
<li class="toctree-l4"><a class="reference internal" href="ivshmem.html">Inter-VM Shared Memory device</a></li>
<li class="toctree-l4"><a class="reference internal" href="keyboard.html">Sparc32 keyboard</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">Network emulation</a></li>
<li class="toctree-l4"><a class="reference internal" href="nvme.html">NVMe Emulation</a></li>
<li class="toctree-l4"><a class="reference internal" href="usb.html">USB emulation</a></li>
<li class="toctree-l4"><a class="reference internal" href="vhost-user.html">vhost-user back ends</a></li>
<li class="toctree-l4"><a class="reference internal" href="virtio-gpu.html">virtio-gpu</a></li>
<li class="toctree-l4"><a class="reference internal" href="virtio-pmem.html">virtio pmem</a></li>
<li class="toctree-l4"><a class="reference internal" href="virtio-snd.html">virtio sound</a></li>
<li class="toctree-l4"><a class="reference internal" href="vhost-user-rng.html">QEMU vhost-user-rng - RNG emulation</a></li>
<li class="toctree-l4"><a class="reference internal" href="canokey.html">CanoKey QEMU</a></li>
<li class="toctree-l4"><a class="reference internal" href="usb-u2f.html">Universal Second Factor (U2F) USB Key Device</a></li>
<li class="toctree-l4"><a class="reference internal" href="igb.html">igb</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../keys.html">Keys in the graphical frontends</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mux-chardev.html">Keys in the character backend multiplexer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../monitor.html">QEMU Monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../images.html">Disk Images</a></li>
<li class="toctree-l2"><a class="reference internal" href="../virtio-net-failover.html">QEMU virtio-net standby (net_failover)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../linuxboot.html">Direct Linux Boot</a></li>
<li class="toctree-l2"><a class="reference internal" href="../generic-loader.html">Generic Loader</a></li>
<li class="toctree-l2"><a class="reference internal" href="../guest-loader.html">Guest Loader</a></li>
<li class="toctree-l2"><a class="reference internal" href="../barrier.html">QEMU Barrier Client</a></li>
<li class="toctree-l2"><a class="reference internal" href="../vnc-security.html">VNC security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tls.html">TLS setup for network services</a></li>
<li class="toctree-l2"><a class="reference internal" href="../secrets.html">Providing secret data to QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="../authz.html">Client authorization</a></li>
<li class="toctree-l2"><a class="reference internal" href="../gdb.html">GDB usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../replay.html">Record/replay</a></li>
<li class="toctree-l2"><a class="reference internal" href="../managed-startup.html">Managed start up options</a></li>
<li class="toctree-l2"><a class="reference internal" href="../bootindex.html">Managing device boot order with bootindex properties</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpu-hotplug.html">Virtual CPU hotplug</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pr-manager.html">Persistent reservation managers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../targets.html">QEMU System Emulator Targets</a></li>
<li class="toctree-l2"><a class="reference internal" href="../security.html">Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../multi-process.html">Multi-process QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="../confidential-guest-support.html">Confidential Guest Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../vm-templating.html">QEMU VM templating</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../user/index.html">User Mode Emulation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../interop/index.html">System Emulation Management and Interoperability</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../specs/index.html">System Emulation Guest Hardware Specifications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../devel/index.html">Developer Information</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #802400" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">QEMU</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">System Emulation</a></li>
<li class="breadcrumb-item"><a href="../device-emulation.html">Device Emulation</a></li>
<li class="breadcrumb-item active">Network emulation</li>
<li class="wy-breadcrumbs-aside">
<a href="https://gitlab.com/qemu-project/qemu/blob/master/docs/system/devices/net.rst" class="fa fa-gitlab"> Edit on GitLab</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="network-emulation">
<span id="id1"></span><h1>Network emulation<a class="headerlink" href="#network-emulation" title="Link to this heading"></a></h1>
<p>QEMU can simulate several network cards (e.g. PCI or ISA cards on the PC
target) and can connect them to a network backend on the host or an
emulated hub. The various host network backends can either be used to
connect the NIC of the guest to a real network (e.g. by using a TAP
devices or the non-privileged user mode network stack), or to other
guest instances running in another QEMU process (e.g. by using the
socket host network backend).</p>
<section id="using-tap-network-interfaces">
<h2>Using TAP network interfaces<a class="headerlink" href="#using-tap-network-interfaces" title="Link to this heading"></a></h2>
<p>This is the standard way to connect QEMU to a real network. QEMU adds a
virtual network device on your host (called <code class="docutils literal notranslate"><span class="pre">tapN</span></code>), and you can then
configure it as if it was a real ethernet card.</p>
<section id="linux-host">
<h3>Linux host<a class="headerlink" href="#linux-host" title="Link to this heading"></a></h3>
<p>As an example, you can download the <code class="docutils literal notranslate"><span class="pre">linux-test-xxx.tar.gz</span></code> archive
and copy the script <code class="docutils literal notranslate"><span class="pre">qemu-ifup</span></code> in <code class="docutils literal notranslate"><span class="pre">/etc</span></code> and configure properly
<code class="docutils literal notranslate"><span class="pre">sudo</span></code> so that the command <code class="docutils literal notranslate"><span class="pre">ifconfig</span></code> contained in <code class="docutils literal notranslate"><span class="pre">qemu-ifup</span></code> can
be executed as root. You must verify that your host kernel supports the
TAP network interfaces: the device <code class="docutils literal notranslate"><span class="pre">/dev/net/tun</span></code> must be present.</p>
<p>See <a class="reference internal" href="../invocation.html#sec-005finvocation"><span class="std std-ref">Invocation</span></a> to have examples of command
lines using the TAP network interfaces.</p>
</section>
<section id="windows-host">
<h3>Windows host<a class="headerlink" href="#windows-host" title="Link to this heading"></a></h3>
<p>There is a virtual ethernet driver for Windows 2000/XP systems, called
TAP-Win32. But it is not included in standard QEMU for Windows, so you
will need to get it separately. It is part of OpenVPN package, so
download OpenVPN from : <a class="reference external" href="https://openvpn.net/">https://openvpn.net/</a>.</p>
</section>
</section>
<section id="using-the-user-mode-network-stack">
<h2>Using the user mode network stack<a class="headerlink" href="#using-the-user-mode-network-stack" title="Link to this heading"></a></h2>
<p>By using the option <code class="docutils literal notranslate"><span class="pre">-net</span> <span class="pre">user</span></code> (default configuration if no <code class="docutils literal notranslate"><span class="pre">-net</span></code>
option is specified), QEMU uses a completely user mode network stack
(you dont need root privilege to use the virtual network). The virtual
network configuration is the following:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">guest</span> <span class="p">(</span><span class="mf">10.0.2.15</span><span class="p">)</span> <span class="o">&lt;------&gt;</span> <span class="n">Firewall</span><span class="o">/</span><span class="n">DHCP</span> <span class="n">server</span> <span class="o">&lt;-----&gt;</span> <span class="n">Internet</span>
<span class="o">|</span> <span class="p">(</span><span class="mf">10.0.2.2</span><span class="p">)</span>
<span class="o">|</span>
<span class="o">----&gt;</span> <span class="n">DNS</span> <span class="n">server</span> <span class="p">(</span><span class="mf">10.0.2.3</span><span class="p">)</span>
<span class="o">|</span>
<span class="o">----&gt;</span> <span class="n">SMB</span> <span class="n">server</span> <span class="p">(</span><span class="mf">10.0.2.4</span><span class="p">)</span>
</pre></div>
</div>
<p>The QEMU VM behaves as if it was behind a firewall which blocks all
incoming connections. You can use a DHCP client to automatically
configure the network in the QEMU VM. The DHCP server assign addresses
to the hosts starting from 10.0.2.15.</p>
<p>In order to check that the user mode network is working, you can ping
the address 10.0.2.2 and verify that you got an address in the range
10.0.2.x from the QEMU virtual DHCP server.</p>
<p>Note that ICMP traffic in general does not work with user mode
networking. <code class="docutils literal notranslate"><span class="pre">ping</span></code>, aka. ICMP echo, to the local router (10.0.2.2)
shall work, however. If youre using QEMU on Linux &gt;= 3.0, it can use
unprivileged ICMP ping sockets to allow <code class="docutils literal notranslate"><span class="pre">ping</span></code> to the Internet. The
host admin has to set the ping_group_range in order to grant access to
those sockets. To allow ping for GID 100 (usually users group):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">echo</span> <span class="mi">100</span> <span class="mi">100</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">proc</span><span class="o">/</span><span class="n">sys</span><span class="o">/</span><span class="n">net</span><span class="o">/</span><span class="n">ipv4</span><span class="o">/</span><span class="n">ping_group_range</span>
</pre></div>
</div>
<p>When using the built-in TFTP server, the router is also the TFTP server.</p>
<p>When using the <code class="docutils literal notranslate"><span class="pre">'-netdev</span> <span class="pre">user,hostfwd=...'</span></code> option, TCP or UDP
connections can be redirected from the host to the guest. It allows for
example to redirect X11, telnet or SSH connections.</p>
</section>
<section id="hubs">
<h2>Hubs<a class="headerlink" href="#hubs" title="Link to this heading"></a></h2>
<p>QEMU can simulate several hubs. A hub can be thought of as a virtual
connection between several network devices. These devices can be for
example QEMU virtual ethernet cards or virtual Host ethernet devices
(TAP devices). You can connect guest NICs or host network backends to
such a hub using the <code class="docutils literal notranslate"><span class="pre">-netdev</span>
<span class="pre">hubport</span></code> or <code class="docutils literal notranslate"><span class="pre">-nic</span> <span class="pre">hubport</span></code> options. The legacy <code class="docutils literal notranslate"><span class="pre">-net</span></code> option also
connects the given device to the emulated hub with ID 0 (i.e. the
default hub) unless you specify a netdev with <code class="docutils literal notranslate"><span class="pre">-net</span> <span class="pre">nic,netdev=xxx</span></code>
here.</p>
</section>
<section id="connecting-emulated-networks-between-qemu-instances">
<h2>Connecting emulated networks between QEMU instances<a class="headerlink" href="#connecting-emulated-networks-between-qemu-instances" title="Link to this heading"></a></h2>
<p>Using the <code class="docutils literal notranslate"><span class="pre">-netdev</span> <span class="pre">socket</span></code> (or <code class="docutils literal notranslate"><span class="pre">-nic</span> <span class="pre">socket</span></code> or <code class="docutils literal notranslate"><span class="pre">-net</span> <span class="pre">socket</span></code>)
option, it is possible to create emulated networks that span several
QEMU instances. See the description of the <code class="docutils literal notranslate"><span class="pre">-netdev</span> <span class="pre">socket</span></code> option in
<a class="reference internal" href="../invocation.html#sec-005finvocation"><span class="std std-ref">Invocation</span></a> to have a basic
example.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="keyboard.html" class="btn btn-neutral float-left" title="Sparc32 keyboard" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="nvme.html" class="btn btn-neutral float-right" title="NVMe Emulation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2025, The QEMU Project Developers.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
<!-- Empty para to force a blank line after "Built with Sphinx ..." -->
<p></p>
<p>This documentation is for QEMU version 8.2.2.</p>
<p><a href="../../about/license.html">QEMU and this manual are released under the
GNU General Public License, version 2.</a></p>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>