Wireguardを使用して仮想マシンにMinikubeサービスを公開する

Wireguardを使用して仮想マシンにMinikubeサービスを公開する

作業中に発生したバグのためBTRFSのMinikube今、Fedora 35ホストのQEMU Fedora 35ゲストVMで実行しています。ポート転送を使用してゲストのPodman divenネットワークサービスにアクセスできますがssh -fNL、そのサブネットに公開されているすべてのURLをゲストで直接使用できるように、より合理的な方法(Wireguard VPNなど)を使用したいと思います。

http://localhost:32220たとえば、ポート転送コマンドを使用してホストブラウザアドレスを介してアクセスできるサービスがありますが、ssh -fNL32220:10.88.0.2:32220 192.168.122.122wireguardを介してホストブラウザをpodman0ネットワークアドレスに接続したいがhttp://10.88.0.3:32220接続できません。

ホスト設定:

$ ip addr show dev wg0
12: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever
$ ip addr show dev virbr0
5: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:92:ca:97 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

$ sudo cat /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <host private key string>
Address = 10.0.0.1/24
ListenPort = 51820

[Peer]
PublicKey = bxL6esqKWNjEcQ7hLeMTE/TYacztAu95f1shVfe7AjQ=
AllowedIPs = 10.88.0.0/16, 10.0.0.2/32
Endpoint = 192.168.122.122:51820

$ sudo cat /etc/sysctl.d/99-sysctl.conf 
net.ipv4.ip_forward=1

ゲスト仮想マシンの設定:

$ ip addr show dev wg0
11: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.2/24 scope global wg0
       valid_lft forever preferred_lft forever
$ ip addr show dev enp1s0 
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:c6:22:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.122/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0
       valid_lft 2474sec preferred_lft 2474sec
    inet6 fe80::5054:ff:fec6:2284/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
$ ip addr show dev podman0
6: podman0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fa:07:63:90:3f:01 brd ff:ff:ff:ff:ff:ff
    inet 10.88.0.1/16 brd 10.88.255.255 scope global podman0
       valid_lft forever preferred_lft forever
    inet6 fe80::7cc5:35ff:fe52:509d/64 scope link 
       valid_lft forever preferred_lft forever
$ sudo cat /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.2/24
SaveConfig = true
ListenPort = 51820
PrivateKey = <guest private key string>

[Peer]
PublicKey = Hwb/SeadMH/JbzelPyL7wvOY14Gf8owOcsDFMObD2lE=
AllowedIPs = 10.0.0.1/32

ゲストはここでサービスを見ることができます(上記のようにSSHトンネルを介して利用可能)。

minikube service list
|----------------------|---------------------------|--------------|------------------------|
|      NAMESPACE       |           NAME            | TARGET PORT  |          URL           |
|----------------------|---------------------------|--------------|------------------------|
| default              | hello-minikube            |         8080 | http://10.88.0.3:32220 |

最後に、Wireguardサービスファイアウォールポートを追加しましたUDP/51820virbr0

$ sudo firewall-cmd --info-zone=libvirt
libvirt (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: virbr0
  sources: 
  services: dhcp dhcpv6 dns ssh tftp wireguard
  ports: 
  protocols: icmp ipv6-icmp
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
    rule priority="32767" reject

(a)これを行う方法、または(b)テストKubernetes Podにゲスト内部URIをより適切にする方法についてのアイデアはありますか?現在私はwaypipeリモートブラウザのインス​​タンス転送を使用しています。ひどいハッキングです。 :D

関連情報