<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Firewall-Cmd on Nyanmo main blog</title>
    <link>https://www.nyanmo.info/tags/firewall-cmd/</link>
    <description>Recent content in Firewall-Cmd on Nyanmo main blog</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Mon, 24 Aug 2026 02:10:51 +0900</lastBuildDate>
    <atom:link href="https://www.nyanmo.info/tags/firewall-cmd/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>QEMU(virt-manager) で動かしている仮想マシンと、外部ネットワーク間において、ポート転送ができず時間を溶かす</title>
      <link>https://www.nyanmo.info/posts/linux/qemuvmunabletoforwardportthatmeandnatrefusetowork/</link>
      <pubDate>Mon, 24 Aug 2026 02:10:51 +0900</pubDate>
      <guid>https://www.nyanmo.info/posts/linux/qemuvmunabletoforwardportthatmeandnatrefusetowork/</guid>
      <description>&lt;h2 id=&#34;この記事を作った動機&#34;&gt;この記事を作った動機&lt;/h2&gt;
&lt;p&gt;　libvirt の仕様を理解していなかった結果、大量の時間を溶かすことがあったので記録したい。具体的には、仮想マシンに対してRDPのためにポート転送を設定しようとしたが、libvirtが作成する、&lt;code&gt;default&lt;/code&gt;ネットワークに属している、&lt;code&gt;virbr0&lt;/code&gt;ブリッジはnftablesをいじっても言うことを聞かないほど、ガチガチに守られていて使うべきではないという結論に至った。&lt;/p&gt;
&lt;p&gt;　今回はそこに至るまでの経緯と、実際に機能する事を確かめた対処方法について記録する。機能する対処方法の概要としては、libvirt以外に、手動でブリッジを専用に作成し、それに対してfirewalldでNATやDNATを構成し、仮想マシンにそのブリッジを使うように設定する事をする。&lt;/p&gt;
&lt;h2 id=&#34;機能した対処方法&#34;&gt;機能した対処方法&lt;/h2&gt;
&lt;h3 id=&#34;仮定&#34;&gt;仮定&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;仮想マシンを動かしているホストマシンは、firewalldのpublicゾーンを使用している&lt;/li&gt;
&lt;li&gt;ホストマシンは、ブリッジに対して&lt;code&gt;192.168.150.1/24&lt;/code&gt;のIPを持つ&lt;/li&gt;
&lt;li&gt;仮想マシンのIPは手動で&lt;code&gt;192.168.150.25/24&lt;/code&gt;を割り当て、ゲートウェイにはホストマシンに向けて&lt;code&gt;192.168.150.1&lt;/code&gt;と設定する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sysctl -w net.ipv4.ip_forward=1&lt;/code&gt;が設定されており、カーネルが異なるインタフェース間のパケットの行き来を許可していること&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ブリッジを作成&#34;&gt;ブリッジを作成&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo brctl addbr virt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ip link set virt up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ip addr add 192.168.150.1/24 dev virt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;仮想マシンを作成したブリッジを使うように設定&#34;&gt;仮想マシンを作成したブリッジを使うように設定&lt;/h3&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://www.nyanmo.info/posts/linux/qemuVMunableToForwardPortThatMeanDNATrefuseToWork/%e3%83%96%e3%83%aa%e3%83%83%e3%82%b8%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%99%e3%82%8b%e6%a7%98%e5%ad%90.png#center&#34;
         alt=&#34;ブリッジを指定する様子&#34;/&gt; 
&lt;/figure&gt;

&lt;h3 id=&#34;firewalld-でnatとdnatを構成する&#34;&gt;firewalld でNATとDNATを構成する&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# ゾーンとポリシー(NAT用)を作成&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --new-zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virt --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virt --add-interface&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virt --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virt --new-policy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;nat --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --policy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;nat --add-ingress-zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virt --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --policy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;nat --add-egress-zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;public --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --policy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;nat --add-masquerade --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# ポート転送設定(DNAT)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;public --add-forward-port&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;port&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;33890:proto&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;tcp:toport&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;3389:toaddr&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.150.25 --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;public --add-forward-port&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;port&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;33890:proto&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;udp:toport&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;3389:toaddr&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.150.25 --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# NATが機能するようにマスカレードと転送を設定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;public --add-masquerade --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo firewall-cmd --zone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virt --add-forward --permanent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl restart firewalld
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;問題至るまでの経緯&#34;&gt;問題至るまでの経緯&lt;/h2&gt;
&lt;h3 id=&#34;今までの構成を見直す&#34;&gt;今までの構成を見直す&lt;/h3&gt;
&lt;p&gt;　今まで仮想マシンへのRDPアクセスは、無理やりVPN経路を通じて同じLAN内に仮想マシンを参加させることで動かしていた。接続が不安定であり定期的にVPNが接続できなくなったり、ネットワークトポロジ的にも循環経路を形成しかねないように見受けられた。VPNを介さずにホストマシンを直接介させることで、仮想マシンに対してRDPを行うために、今回は仮想マシンのRDPポートである、&lt;code&gt;3389&lt;/code&gt;に対してポート転送を行う事を考えた。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
