Homelab Proxmox VMの仮想ルーター:メイン/ホームネットワークから仮想ルーターの背後にあるVMに要求を送信するには?

Homelab Proxmox VMの仮想ルーター:メイン/ホームネットワークから仮想ルーターの背後にあるVMに要求を送信するには?

このようなホームラップ設定があります(ダイアグラムも使用可能)ここ):

ネットワーク

ここで注目すべき点は、私のProxmoxホストにはイーサネットケーブル用のNICが1つしかないことです。 WiFiもありますが、私がやりたいことがうまくいかず、使わないことにしました。 (これはこれに関する数十の記事/フォーラムを読んだ後に私が理解したものです。)

それで、WiFiリピーターのイーサネットケーブルを接続しました。このProxmoxホストは私たちの家の他の場所にあります。だから家のルーターにイーサネットを直接接続しません。私のラップトップからワイヤレスSSH()を介してProxmoxホストに接続できます192.168.1.5。また、ProxmoxのWeb UIへのワイヤレスアクセスも可能ですhttps://192.168.1.5:8006

ここでやりたいことは、ホームネットワークと仮想マシンネットワーク間のネットワーク分割です。私はpfSense、OpenWrtなどの無料のルーターソフトウェアがあることを知っています。しかし、私はこの機会を通して物事がどのように連携するかをよりよく理解するために最初から再構築したいと思いました。

このProxmoxホストでいくつかの仮想マシンを実行する予定です。ここで作成した仮想マシンネットワーク内ですべて実行する必要があります。一部の仮想マシンは動的IP / DHCPモードで実行でき、一部の仮想マシンは静的IPモードで実行できます。そのうち99%がLinux仮想マシンになります。現在、VMネットワークにはIPv6のサポートがなく、正常に動作しています。また、ルータが VLAN をサポートしていないため、VLAN を使用できません。

そう言うとついていこうこのガイドUbuntu VMで仮想ルーターを作成します。私がガイドとは異なる唯一のことは、ブリッジ(br0)を作成し、そこに静的IP(192.168.2.1/24)を割り当てることによってVMネットワークのルーター/仮想スイッチになることです。

私は従わなかったインターネットからLANへのポート転送そしてそれではその試験について...ステップは必要ないからです。つまり、私は以下を含むすべてのステップに従いました。インターネットトラフィックを許可ステップ。

私が今まで見たこと:

  • [OK]仮想マシンは互いにpingできます。
  • [OK] 仮想マシンがインターネットにpingを送信できます。
  • [異常] VM 1とVM 2がラップトップ、ルーターなどのホームネットワークのデバイスにpingを送信できる
  • [OK] ノートブックがルータの仮想マシンにpingを送信できます。
  • [例外]ノートブックは仮想マシン1または仮想マシン2をpingできません*

*私のラップトップに以下を介して固定パスを追加しました。このガイド。また、ホームルーター/ゲートウェイに固定ルートを追加してみました。

FWIW、以下は私の構成です...

ip aProxmoxホストで:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP group default qlen 1000
    link/ether fc:4d:d4:f3:fe:d3 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 28:c2:dd:a5:46:53 brd ff:ff:ff:ff:ff:ff
4: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fc:4d:d4:f3:fe:d3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 scope global vmbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::fe4d:d4ff:fef3:fed3/64 scope link
       valid_lft forever preferred_lft forever
5: vmbr1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 8e:7e:21:7e:f9:e1 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::8c7e:21ff:fe7e:f9e1/64 scope link
       valid_lft forever preferred_lft forever
11: tap104i0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UNKNOWN group default qlen 1000
    link/ether b6:5c:75:be:38:d5 brd ff:ff:ff:ff:ff:ff
12: vmbr2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 3e:6b:04:2c:d9:e0 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::3c6b:4ff:fe2c:d9e0/64 scope link
       valid_lft forever preferred_lft forever
13: tap104i1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr2 state UNKNOWN group default qlen 1000
    link/ether 46:d9:8f:dd:ab:77 brd ff:ff:ff:ff:ff:ff
23: tap102i0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr2 state UNKNOWN group default qlen 1000
    link/ether 46:9c:a4:fd:81:27 brd ff:ff:ff:ff:ff:ff
24: tap103i0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr2 state UNKNOWN group default qlen 1000
    link/ether 12:90:ee:36:27:7a brd ff:ff:ff:ff:ff:ff

/etc/network/interfacesProxmoxホストの内容:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 192.168.1.5/24
    gateway 192.168.1.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

iface wlp2s0 inet manual

auto vmbr1
iface vmbr1 inet manual
    bridge-ports none
    bridge-stp off
    bridge-fd 0

auto vmbr2
iface vmbr2 inet manual
    bridge-ports none
    bridge-stp off
    bridge-fd 0

post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '192.168.2.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.2.0/24' -o vmbr0 -j MASQUERADE

メモ:

  • vmbr1以前の実験では無関係または無関係です。私のVMのどれもvmbr1ネットワークを使用していません。
  • 16post-up進コピーpost-downこのガイド- 私の試行錯誤の努力の一部

ip aルーターVM上:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 2a:06:12:a9:18:98 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 192.168.1.175/24 metric 100 brd 192.168.1.255 scope global dynamic ens18
       valid_lft 4270sec preferred_lft 4270sec
    inet6 fe80::2806:12ff:fea9:1898/64 scope link
       valid_lft forever preferred_lft forever
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether ca:bc:10:17:e0:2f brd ff:ff:ff:ff:ff:ff
    altname enp0s19
    inet6 fe80::c8bc:10ff:fe17:e02f/64 scope link
       valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether da:56:23:09:09:72 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.1/24 brd 192.168.2.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::d856:23ff:fe09:972/64 scope link
       valid_lft forever preferred_lft forever

/etc/network/interfacesルーターVMの内容:

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet dhcp

#auto ens19
#iface ens19 inet static
#   address 192.168.99.1
#   netmask 255.255.255.0

ルーター仮想マシンのIP転送構成:

$ cat /etc/sysctl.conf | grep net.ipv4.ip_forward
net.ipv4.ip_forward=1

/etc/network/if-pre-up.d/iptablesルーターVMの内容:

#!/bin/sh
/sbin/iptables-restore < /etc/network/iptables

/etc/network/iptablesルーターVMの内容:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# ens18 is WAN interface
# br0 is LAN interface
-A POSTROUTING -o ens18 -j MASQUERADE

COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# Service rules
# basic global accept rules - ICMP, loopback, traceroute, established all accepted
-A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT

# enable traceroute rejections to get sent out
-A INPUT -p udp -m udp --dport 33434:33523 -j REJECT --reject-with icmp-port-unreachable

# DNS - accept from LAN
-A INPUT -i br0 -p tcp --dport 53 -j ACCEPT
-A INPUT -i br0 -p udp --dport 53 -j ACCEPT

# DHCP client requests - accept from LAN
-A INPUT -i br0 -p udp --dport 67:68 -j ACCEPT

# SSH - accept from WAN
-A INPUT -i ens18 -p tcp --dport 22 -j ACCEPT

# drop all other inbound traffic
-A INPUT -j DROP

# Forwarding rules
# forward packets along established/related connections
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# forward ICMP
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -p icmp -s 0.0.0.0/0 -d 192.168.2.0/24 -j ACCEPT

# forward from LAN (br0) to WAN (ens18)
-A FORWARD -i br0 -o ens18 -j ACCEPT

# drop all other forwarded traffic
-A FORWARD -j DROP

COMMIT

ルータ仮想マシンのコマンド結果は次のとおりですsudo iptables -S

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --dport 33434:33523 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i br0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i br0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i br0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -i ens18 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -d 192.168.2.0/24 -p icmp -j ACCEPT
-A FORWARD -i br0 -o ens18 -j ACCEPT
-A FORWARD -j DROP

ルータ仮想マシンのDHCP設定/etc/dhcp/dhcpd.conf:

subnet 192.168.2.0 netmask 255.255.255.0 {
    range 192.168.2.100 192.168.2.199;
    option routers 192.168.2.1;
    option domain-name-servers 192.168.2.1;
    option broadcast-address 192.168.2.255;
        host ubuntu-desktop {
          hardware ethernet 5A:5B:74:01:69:34;
          fixed-address 192.168.2.2;
        }
}

注:ubuntu-desktopこれはVM 1です。

質問:

  1. VM1とVM2がホームネットワーク上のデバイスにアクセスできないようにするにはどうすればよいですか? TCP/UDP/ICMPなど

  2. ラップトップまたはデスクトップを使用するときにping / ICMP要求転送(ping 192.168.2.2/)などのVM 1およびVM 2にアクセスするにはどうすればよいですかping 192.168.2.101?両方のVMのポート80(/)curl 192.168.2.2で実行されているNginxプロセスにアクセスし、ポート22(curl 192.168.2.101で実行されているSSHサーバープロセス)/)?ssh [email protected]ssh [email protected]

これについて調査をして、DNAT/SNAT/Masqueradeのテーマを扱っていますが、それが私に必要なのかどうかはわかりません。それでは、ルールはどのようなものでなければなりませんか?私はこのiptablesトピックに初めて触れました。以下のルールを試しましたが、まだ私のラップトップからVM 1とVM 2にpingを送信できませんでした。

iptables -I FORWARD -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT
iptables -I FORWARD -s 192.168.2.0/24 -d 192.168.1.0/24 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -d 192.168.2.0/24 -j SNAT --to 192.168.2.1

ベストアンサー1

ブリッジインターフェイスを使用すると、VM1とVM2は同じブロードキャストドメイン(192.168.2.0/24)に属するため、ラップトップとPCをpingできます。ブリッジインターフェイスを削除し、ホストアダプタ/ネットワークとのみ交換する必要があります。

仮想マシン分離ネットワークが192.168.10.0/24であると仮定します。その後、ルーターVMでマスカレーディングを有効にする必要があります。

$ sudo iptables -A POSTROUTING -o ens18 -j MASQUERADE

ノートブック/PCがVM1またはVM2をpingするには、promox(192.168.1.5)を介して物理GW /ルーターに固定パスを追加する必要があります。

$ sudo ip route add 192.168.10.0/24 via 192.168.1.5

物理ルーター/ゲートウェイが静的ルーティングをサポートしていない場合、ルーティングの問題が発生する可能性があります。上記のコマンドはLinuxにのみ適用されますが、要件を説明するために使用されます。

引用:https://dannyda.com/2020/06/01/how-to-create-an-internal-only-isolation-network-for-guest-os-virtual-machines-vm-on-proxmox-ve-pve- vmware-workstation-host-only-network-but-other/と同じです。

おすすめ記事