Hetznerネットワーキングチームから、このサブネットに属する仮想マシンのMACアドレスを使用しないように求める電子メールを受け取りました。
Xenサーバーホストをルーターとして設定します。このガイドを使用してください。
詳細について問い合わせた後、Hetznerサポートチームは通常、ハイパーバイザーのネットワーク構成では、実際のNICのMACアドレスを使用してシステムから発信されるパケットのみを許可する必要があると答えました。ただし、問題が表示されない場合は、IPtablesを使用してこれらの発信パケットをブロックしてみてください。
だから私たちの質問は次のとおりです。
Hetznerまたは他の専用サーバープロバイダにこの問題が発生した場合。
どうやって解決しましたか?
ありがとう
実践計画を試しましたが、役に立ちませんでした。
- 作る独立したルーターVM
sysctl.conf
次のコマンドを使用して、すべての仮想マシンとホストでIPv6をオフにします。両方のホストインターフェイスでマスカレーディング
-A POSTROUTING -o xenbr0 -j MASQUERADE -A POSTROUTING -o eth0 -j MASQUERADE
以下を追加してください。
/etc/sysctl.conf
net.ipv4.conf.default.proxy_arp = 1
構成の詳細
ホスト/ルーターの構成:
[root@xenserver-custom ~]# cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.xenbr0.send_redirects = 0
[root@xenserver-custom network-scripts]# ip addr add 85.91.107.177/28 dev xenbr0
[root@xenserver-custom ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 0c:c4:7a:e7:dc:33 txqueuelen 1000 (Ethernet)
RX packets 4704816217 bytes 6002063739181 (5.4 TiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6294828922 bytes 7643975899027 (6.9 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1 (Local Loopback)
RX packets 518545683 bytes 6322784653872 (5.7 TiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 518545683 bytes 6322784653872 (5.7 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vifxxxx
.....................
xenbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 115.35.61.184 netmask 255.255.255.192 broadcast 115.35.61.191
ether 0c:c4:7a:e7:dc:33 txqueuelen 1 (Ethernet)
RX packets 3070611738 bytes 8670969429554 (7.8 TiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2680055664 bytes 9822630727363 (8.9 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
VMゲストの設定
[root@r1213a network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=85.91.107.184
PREFIX=28
GATEWAY=85.91.107.177
DNS1=213.133.98.98
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
[root@r1213a network-scripts]# ifconfig
eth0 Link encap:Ethernet HWaddr B6:8F:14:74:A6:B6
inet addr:85.91.107.184 Bcast:85.91.107.191 Mask:255.255.255.240
inet6 addr: fe80::b48f:14ff:fe74:a6b6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27122939 errors:0 dropped:2 overruns:0 frame:0
TX packets:2218911 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5404322465 (5.0 GiB) TX bytes:1061055301 (1011.9 MiB)
[root@r1213a network-scripts]# ip route
default via 85.91.107.177 dev eth0
85.91.107.176/28 dev eth0 proto kernel scope link src 85.91.107.184
[root@r1213a network-scripts]# traceroute google.com
traceroute to google.com (172.217.18.110), 30 hops max, 60 byte packets
1 xenserver.localdomain (85.91.107.177) 0.081 ms 0.029 ms 0.039 ms
2 static.129.61.69.159.clients.your-server.de (159.69.61.129) 0.390 ms 0.410 ms 0.370 ms
3 core22.fsn1.hetzner.com (213.239.245.121) 0.393 ms 0.416 ms 0.424 ms
4 core0.fra.hetzner.com (213.239.252.33) 5.207 ms 5.184 ms core0.fra.hetzner.com (213.239.252.29) 5.049 ms
5 72.14.218.94 (72.14.218.94) 5.273 ms 5.249 ms 72.14.218.176 (72.14.218.176) 4.990 ms
6 108.170.251.193 (108.170.251.193) 5.139 ms * 5.019 ms
7 209.85.241.75 (209.85.241.75) 5.834 ms 216.239.40.58 (216.239.40.58) 5.092 ms 172.253.64.119 (172.253.64.119) 5.707 ms
8 108.170.251.144 (108.170.251.144) 15.292 ms zrh04s05-in-f110.1e100.net (172.217.18.110) 4.952 ms 4.903 ms
答え1
ホストからのパケットをMASQUERADEにすることで、この問題を解決できると思います。iptables
ルールによれば、この問題を解決できます。
iptables -t nat -A POSTROUTING -i eth0 -j MASQUERADE
このルールは、発信パケットをそのインターフェイス上のパケットに書き換えるようにカーネルに指示し、eth0
応答トラフィックを送信者に返すことができるように、逆方向マッピングも維持します。
ただし、VM パケットは転送ではなくブリッジングを介して転送されるため、ルールがiptables
そのトラフィックに適用されない場合があります。このリンクそれについての簡単な要約です。
答え2
サポートしました解決策superuser.comから。これは私にとって効果的です
すべてのクレジットはAlexey Degtyarevに戻ります。
解決策を指摘してくれたHetznerネットワークチームにも感謝していますが、同じネットワークで2番目のxenbrを作成してVIFを割り当てようとすると、間違った方向に行きました。ただし、VMの再起動後にVIF番号が再生成されるため、機能しません。
Hetznerには、専用サーバーで使用できる2つのタイプの追加のIPアドレス、つまり単一のIPv4およびIPv4サブネットがあります。各IPにMACアドレスが提供され、新しいVMインスタンスのネットワークインターフェイスでそのMACを使用する必要があります。追加のサブネットごとに新しいネットワークを設定し、そのネットワークとサーバーのプライマリネットワーク(eth0に関連付けられている)間のルーティングを設定する必要があります。
XenServerでは、Linuxコンソールを使用してこれを実行できます。
xe network-create name-label="Additional network" name-description="46.xx.yy.zz/28"
ヒント1:仮想マシンの1つをXen Centerの新しいネットワークに割り当てるまで、xapi0ブリッジはホストに表示されませんでした。他の人にこれが発生した場合は、1つのヒントだけで時間を節約できます。
これにより、XenServerの新しいブリッジに接続された新しいネットワークが作成されます(デフォルトはxapi0)。次に、ネットワークの最初の使用可能なIPアドレス(ネットマスクベース)をブリッジに割り当てます。
ip addr add 46.xx.yy.1/28 dev xapi0
これで、新しい仮想マシンを追加し、自動生成されたMACをプライマリネットワークの代わりに新しく作成されたネットワークに接続できるようになりました。トラフィックはXenServer内で切り替えられ、ルーティングされます。
この設定が完了したら、HetznerネットワーキングチームからスイッチポートでのみMACを表示できるようにすることを確認しました。
ヒント2:eth0に問題のあるトラフィックがないことをホスト側で確認できます。
tcpdump -i eth0 -en|egrep -i 'mac1|mac2'
これらはすべてxapi0で見ることができます
tcpdump -i xapi0 -en|egrep -i 'mac1|mac2'
ここで mac1,mac2 - Hetzner が禁止したと報告された MAC アドレスです。