devstackで作ったOpenStack環境で稼働している仮想マシンをインターネットと通信させたい。
local.confに以下の設定が必要:
[[local|localrc]]
IP_VERSION=4
PUBLIC_INTERFACE=eno16777736
OVS_PHYSICAL_BRIDGE=br-ex
FLOATING_RANGE=192.168.226.0/24
PUBLIC_NETWORK_GATEWAY=192.168.226.2
HOST_IP=192.168.226.129
[[post-config|/etc/neutron/dhcp_agent.ini]]
[DEFAULT]
dnsmasq_dns_servers = 192.168.226.2
ip route
などを見て、デフォルトゲートウェイになっているインターフェースをPUBLIC_INTERFACE
に設定する。PUBLIC_INTERFACE
とOVS_PHYSICAL_BRIDGE
を設定しておくと、devstackがbr-exスイッチにPUBLIC_INTERFACE
をさしてくれる。逆に言うと、この2つを設定しないとbr-exスイッチにインターネットと繋がるポートが設定されない。これではNATしない限りインターネットとの通信はできない。何所ともつながっていない。
PUBLIC_INTERFACE
と同じネットワークレンジをFLOATING_RANGE
、デフォルトゲートウェイをPUBLIC_NETWORK_GATEWAY
、DNSをdnsmasq_dns_servers
に設定する。サブネットのDNS設定を空にしておくと、dnsmasqは自身をプライマリDNSとしたネットワーク設定情報をゲストに渡す。この最後の設定により、そのdnsmasqがDNSのスレーブもになるため、ゲストからの名前解決に答えられるようになる。書かないとdnsmasqは名前の解決ができない。正確には「僕に質問されても誰に確認すればよいのか分からない」という情況になる。上司のいないヒラ公務員のようなもの。(じゃあ最初から課長を出せ、ってことでdevstack完了後にprivateサブネットのDHCP設定を編集して、DHCPサーバーがゲストに外部DNSを割り振るようにしてもよい。けど./stack.sh
ってやるだけのほうが楽だと思う。)
IPv6を試してみたいのでなければ、IPv6形式のアドレスで画面が見にくくなるのでOff。HOST_IP
はデフォルトゲートウェイになっているインターフェースに割り当てられているIPを設定する。