web-dev-qa-db-ja.com

ゲストへのアクセスVM追加のパブリックIP経由)

CentOS専用サーバー(Hetzner)があります:
IP:aa.bb.cc。16
ゲートウェイ:aa.bb.cc.1
ネットマスク:255.255.255.255

および追加のIP(DebianがインストールされたゲストVM(libvirt)):
IP:aa.bb.cc。61
ゲートウェイ:aa.bb.cc.1
ネットマスク:255.255.255.192

Hetznerのドキュメントを使用してルーティングされた構成をセットアップしました( https://wiki.hetzner.de/index.php/Netzkonfiguration_CentOS/en#Routed_.28brouter.29 )。

ホスト構成:
cat /etc/sysctl.conf

net.ipv4.conf.all.rp_filter=1  
net.ipv4.icmp_echo_ignore_broadcasts=1  
net.ipv4.ip_forward=1  
net.ipv6.conf.all.forwarding=1  
net.ipv4.conf.default.proxy_arp=1  
net.ipv4.conf.all.send_redirects=0  
net.ipv4.conf.eth0.send_redirects=0  
net.ipv4.conf.br0.send_redirects=0  
net.ipv4.conf.default.send_redirects=0  
net.bridge.bridge-nf-call-ip6tables = 0  
net.bridge.bridge-nf-call-iptables = 0  
net.bridge.bridge-nf-call-arptables = 0  

cat/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
HWADDR=XX:XX:XX:XX:XX:XX
BOOTPROTO=none
IPADDR=aa.bb.cc.16
NETMASK=255.255.255.255
SCOPE="peer aa.bb.cc.1"
IPV6INIT=yes
IPV6ADDR=2a01:4f8:yyy:yyyy::2/128
IPV6_DEFAULTGW=fe80::1
IPV6_DEFAULTDEV=eth0

cat/etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
ONBOOT=yes
TYPE="Bridge"
BOOTPROTO=static
IPADDR=aa.bb.cc.16
NETMASK=255.255.255.255
IPV6INIT=yes
IPV6ADDR=2a01:4f8:yyy:yyyy::2/64
STP=off
DELAY=0

cat/etc/sysconfig/network-scripts/route-br0

ADDRESS0=aa.bb.cc.61
NETMASK0=255.255.255.255

ゲスト設定:
cat/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
    iface eth0 inet static
    address aa.bb.cc.61
    netmask 255.255.255.255
    pointopoint aa.bb.cc.16
    gateway aa.bb.cc.16
    dns-nameservers 212.133.98.98 212.133.99.99 212.133.100.100

iface eth0 inet6 static
    address 2a01:4f8:yyy:yyyy::4
    netmask 64
    address 2a01:4f8:yyy:yyyy::2

ゲストVMからインターネットへのインターネットアクセスについては、次のルールを追加しました。

iptables -t nat -A POSTROUTING -o eth0 -s aa.bb.cc.61 -j SNAT --to-source aa.bb.cc.16

質問:インターネットからゲストにアクセスすることは可能ですVMゲストIP経由aa.bb.cc。61inルーティングモード?外部(インターネット)からaa.bb.cc。61にpingを実行すると、「リクエストがタイムアウトしました」と表示されますが、aa.bb .cc.16(ホスト)ping ok。どのルールを追加する必要がありますか?

ありがとうございました。

2

これが解決策です:

cat/etc/sysconfig/network-scripts/ifcfg-eth

DEVICE=eth0
ONBOOT=yes
HWADDR=XX:XX:XX:XX:XX:XX
BOOTPROTO=none
IPADDR=aa.bb.cc.16
NETMASK=255.255.255.255
SCOPE="peer aa.bb.cc.1"
BRIDGE=br0

cat/etc/sysconfig/network-scripts/ifcfg-br

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=aa.bb.cc.16
NETMASK=255.255.255.255
SCOPE="peer  aa.bb.cc.1"
ONBOOT=yes
DELAY=0

mv/etc/sysconfig/network-scripts/route-eth0/etc/sysconfig/network-scripts/route-brcat cat/etc/sysconfig/network-scripts/route-br

### Hetzner Online GmbH - installimage
# routing for eth0
ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=aa.bb.cc.1

ゲスト設定:
cat/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
    iface eth0 inet static
    address aa.bb.cc.61
    netmask 255.255.255.255
    pointopoint aa.bb.cc.16
    gateway aa.bb.cc.16
    dns-nameservers 212.133.98.98 212.133.99.99 212.133.100.100
    hwaddress ether 00:01:02:ab:cd:de # MAC Address for additional IP
0

まず、いくつかのことを明確にする必要があります。

使用しているガイドは、「ルーターモード」と「ブリッジモード」を参照しています。

説明されているルーターモードはほとんど無意味です。これには、空の「ホストのみ」ブリッジを作成し、VMをそれに接続してから、そのブリッジからアウトバウンドインターフェイスにIPレベルのトラフィックをルーティングすることが含まれます。これは、libvirtが独自のブリッジを作成できるという事実を無視します。 NAT仮想インターフェイス(オプションのルーティング、DHCP、およびDNSを使用)および接続VMインターフェイス。実際、libvirtではこのネットワークが作成され、デフォルトで有効になっています。 。これは「デフォルト」ネットワークと呼ばれます。

あなたの場合、2つのサブネットがあります(ほとんどすべての状況でそうであるように、これは別々のレイヤー2ドメインにあると思います)。 1つのアドレスがハイパーバイザー「aa.bb.cc.16/32」へのアクセスに使用されます(これは無効なサブネットです。これについては後で詳しく説明します)。このアドレスは、インターフェイスに直接配置できます。

そして、別のサブネット(aa.bb.cc.61/26)に2番目のIPがあります。このアドレスは、ゲスト内のVMインターフェイスに配置する必要があります。これは、ブリッジを使用して直接実行できます。投稿したガイドは、元々「ルーテッドモード」の悪い解決策を提供していますが、提案されています直接使用されるブリッジの構成は、実際には正しい方法ですが、完全に誤った構成も提供します。

シナリオを反映するように値を更新すると、次のネットワーク構成が上記のブリッジで機能します。

# /etc/sysconfig/network-scripts/ifcfg-eth0
# device: eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
BRIDGE=br0

# /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE="Bridge"
BOOTPROTO=static
ONBOOT=yes

これが完了したら、このブリッジをデバイスとして使用して、VM NICに接続します。必要に応じて、ブリッジ自体にIPアドレスを設定できます。 、ホストとゲスト間の通信を許可します。ただし、パブリックアクセスを求めているサブネット上にあります。ホストからゲストへの通信が必要な場合は、「デフォルト」=を使用してプライベートレイヤー2ドメインをお勧めします。 NATインターフェイス、またはホストとゲストの両方にプライベートIPスペースを持つ空のブリッジを介して(VM上に合計2つのNICを作成します)。

ちなみに、ハイパーバイザーIP(255.255.255.255)用に投稿したネットマスクは32ビットです。それはそのネットワーク上で単一のアドレスを許可しません、そして私はそれが単なるタイプミスであると思います。タイプミスでない場合は、31ビットのネットマスクであっても、実際にホストを許可するアドレス空間を使用する必要があります。

それは一般的な意味で物事をカバーしています。うまくいけば、それはあなたが決定を下し、物事を適切に構成するのに十分な情報です。

0
Spooler