この記事では、
Ketaベースの
Hetzner (他のHVMやXenにも適している可能性があります)で使用されているものと同様のネットワーク構成でのIPv4およびIPv6の適切な構成に焦点を当てています。
ホストとほとんどの仮想マシンにUbuntuがあるため、インターフェイス構成の例はifupに基づいています。 IPv4ガイドは
、Hetzner Wikiの記事に基づいていますが、私は主にIPv6の問題をGoogleで
調べています。
開始条件
このホストから、すぐに1つのIPv4アドレスを取得します。 それに加えて、最大3つのIPv4アドレスとサブネットブロックを要求/購入できます。 この例では、次の構成が考慮されます。
ホストIP:
123.45.12.48
ゲートウェイ:
123.45.12.1
追加IP:
123.45.53.11、123.45.53.12、123.45.53.13
追加のサブネット:
123.45.90.112/29
Hetznerは、すべてのパケットを最初の(通常のみ)eth0インターフェイスのMACアドレスに送信し、すべての発信パケットが同じMACアドレスを離れることを期待します。 サポートを通じて、追加の
「ピース」 IPアドレスに他のMACアドレスを設定するように依頼できます。これにより、KVM-ok vnet *インターフェースをeth0を持つ1つのブリッジにドロップできますが、この構成は考慮しません。
したがって、最終構成で必要なものは次のとおりです。
- NATがない場合、各VMは少なくとも1つのパブリックIPアドレスを受け取ります。
- ホストはすべてのルーティングを行います:
- 異なるVM間のトラフィック。
- VMとインターネット間のtrifik。
- iptablesでパケットを集中的にフィルタリングします(VMの相互およびインターネットとの相互作用を制限できます)
- 選択したサブネットのIPアドレスは失われません( デモサブネットでは、アドレス123.45.90.112および123.45.90.119は通常の方法では使用できません-これらはネットワークおよびブロードキャストアドレスです)
ネットワークを構成するには、bridge-utils、dhcp3-server、iptables、iproute2のパッケージが必要です。
メインホストインターフェイスを構成する
/ etc / network / interfacesで、eth0を次のように定義する必要があります。
auto eth0
iface eth0 inet static
address 123.45.12.48
netmask 255.255.255.255
gateway 123.45.12.1
pointopoint 123.45.12.1
マスク255.255.255.255は、pointopoint ifupオプションを介してゲートウェイが技術的に同じインターフェース上にあることを決定することにより、すべての発信パケットがゲートウェイに送られることを意味します(もちろん、制限されたマスクのために到達しません)。 これは、次のルーティングルールと同等です。
123.45.12.1 dev eth0 proto kernel scope link src 123.45.12.48
default via 123.45.12.1 dev eth0 metric 100
VM用のブリッジの構成
タスクはVM間のトラフィックを制限することであるため、VMを1つのブリッジに押し込むことはできません。
追加の各IPアドレスおよび
/ 29サブネットからの 各アドレス
に対して、個別のブリッジを記述する必要があります。
auto br 112
br 112 iface inet static
address 172.30. 112 .1
netmask 255.255.255.0
pre-up brctl addbr br 112
post-up route add -host 123.45.90.112 br112
post-down brctl delbr br 112
各ブリッジはbr <xxx>と呼ばれます。xxxはIPv4アドレスの最後のバイトです。 プライベートIPv4アドレスは172.30.xx.0 / 24(以下で説明)から生成されます;そこには、brctlがインターフェイスの説明にアタッチされ(プレアップでブリッジを作成、ポストダウンで破棄)、ルーティングが構成されます(パブリックIPアドレスはこのブリッジで定義されます)。
br
11 、br
12 、br
13 、およびbr
113 -br
119は、まったく同じです。
DHCPを構成する
一部のOSのインストール中にポイントポイントの構成は難しいため、DHCPサーバーはVMの各ブリッジで動作し、インストールを完了するのに十分な基本IPv4構成を提供します。
/etc/dhcp3/dhcpd.confのdhcp3構成を次のように変更します。
authoritative;
default-lease-time 3600;
max-lease-time 3600;
ddns-update-style ad-hoc;
log-facility local7;
use-host-decl-names on;
option subnet-mask 255.255.255.0;
option domain-name "lan";
option domain-name-servers xx.yy.100.100, xx.yy.99.99, xx.yy.98.98; <-- DNS–
subnet 172.30.11.0 netmask 255.255.255.0 {
option routers 172.30.11.1;
range 172.30.11.10 172.30.11.200;
}
subnet 172.30.12.0 netmask 255.255.255.0 {
option routers 172.30.12.1;
range 172.30.12.10 172.30.12.200;
}
subnet 172.30.13.0 netmask 255.255.255.0 {
option routers 172.30.13.1;
range 172.30.13.10 172.30.13.200;
}
subnet 172.30.112.0 netmask 255.255.255.0 {
option routers 172.30.112.1;
range 172.30.112.10 172.30.112.200;
}
...
subnet 172.30.119.0 netmask 255.255.255.0 {
option routers 172.30.119.1;
range 172.30.119.10 172.30.119.200;
}
また、dhcp3が機能するインターフェイスについても説明します。ファイル/ etc / default / dhcp3-serverでINTERFACESを変更します。
INTERFACES="br11 br12 br13 br112 br113 br114 br115 br116 br117 br118 br119"
次に、dhcp3を再起動します。
/etc/init.d/dhcp3-server restart
iptablesのセットアップ
#!/bin/sh
it="/sbin/iptables"
MY_NET=" 123.45.90.112/29 123.45.53.11/32 123.45.53.12/32 123.45.53.13/32 "
MY_NET_DHCP="172.30.0.0/16"
HOST_IP=" 123.45.12.48 "
MAIN_IF="eth0"
# INPUT
$it -F INPUT
$it -A INPUT -p udp --dport 67 -i br+ -j ACCEPT
# INPUT
#$it -A INPUT -j DROP
# FORWARD
$it -F FORWARD
$it -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
for NET in $MY_NET; do
$it -A FORWARD -i br+ -o $MAIN_IF -s $NET -j ACCEPT # VM[fixed_ip] --> net
done
for NET in $MY_NET_DHCP; do
$it -A FORWARD -i br+ -o $MAIN_IF -s $NET -j ACCEPT # VM[dhcp] --> net
done
for SOURCE_NET in $MY_NET $MY_NET_DHCP; do
for DEST_NET in $MY_NET; do
$it -A FORWARD -i br+ -o br+ -s $SOURCE_NET -d $DEST_NET -j ACCEPT # VM <--> VM
done
done
for NET in $MY_NET; do
$it -A FORWARD -i $MAIN_IF -o br+ -d $NET -j ACCEPT # net --> VM
done
$it -A FORWARD -i $MAIN_IF -o gbr1 -d $MY_NET_PVT -j ACCEPT # net --> PVT
$it -P FORWARD DROP
# POSTROUTING
$it -t nat -F POSTROUTING
for NET in $MY_NET_DHCP; do
$it -t nat -A POSTROUTING -o $MAIN_IF -s $NET -j SNAT --to-source $HOST_IP # nat the dhcp
# NAT IP- DHCP
done
echo 1 > / proc/sys/net/ipv4/ip_forward
VMセットアップ
さて、最後のステップはVMを直接構成することです。 libvirt / KVMの場合、ブリッジを介したネットワークについて説明します。
<interface type='bridge'>
<source bridge='brXX'/>
<model type='virtio'/>
</interface>
同時に、最初のブート時に、仮想マシンはDHCPからプライベートアドレスを受け取ります。インストール後、パブリックIPを修正する必要があります。
auto eth0
iface eth0 inet static
address 123.45.90.116
netmask 255.255.255.255
gateway 123.45.12.48
pointopoint 123.45.12.48
この記事のボリュームは十分に大きかったので、IPv6については別に書きます。