配置 DHCP 服務 - 天天5分鐘玩轉 OpenStack(89)

前面章節咱們看到 instance 在啓動過程當中可以從 Neutron 的 DHCP 服務得到 IP,本節將詳細討論其內部實現機制。linux

Neutron 提供 DHCP 服務的組件是 DHCP agent。 DHCP agent 在網絡節點運行上,默認經過 dnsmasq 實現 DHCP 功能。數據庫

配置 DHCP agent

DHCP agent 的配置文件位於 /etc/neutron/dhcp_agent.ini。網絡

dhcp_driver
使用 dnsmasq 實現 DHCP。spa

interface_driver
使用 linux bridge 鏈接 DHCP namespace interface。3d

當建立 network 並在 subnet 上 enable DHCP 時,網絡節點上的 DHCP agent 會啓動一個 dnsmasq 進程爲該 network 提供 DHCP 服務。dns

dnsmasq 是一個提供 DHCP 和 DNS 服務的開源軟件。 dnsmasq 與 network 是一對一關係,一個 dnsmasq 進程能夠爲同一 netowrk 中全部 enable 了 DHCP 的 subnet 提供服務。進程

回到咱們的實驗環境,以前建立了 flat_net,而且在 subnet 上啓用了 DHCP,執行 ps 查看 dnsmasq 進程,以下圖所示:ci

DHCP agent 會爲每一個 network 建立一個目錄 /opt/stack/data/neutron/dhcp/,用於存放該 network 的 dnsmasq 配置文件。開源軟件

下面討論 dnsmasq 重要的啓動參數:軟件

--dhcp-hostsfile
存放 DHCP host 信息的文件,這裏的 host 在咱們這裏實際上就是 instance。 dnsmasq 從該文件獲取 host 的 IP 與 MAC 的對應關係。 每一個 host 對應一個條目,信息來源於 Neutron 數據庫。

對於 flat_net,hostsfile 是 /opt/stack/data/neutron/dhcp/f153b42f-c3a1-4b6c-8865-c09b5b2aa274/host,記錄了 DHCP,cirros-vm1 和 cirros-vm2 的 interface 信息。

--interface
指定提供 DHCP 服務的 interface。 dnsmasq 會在該 interface 上監聽 instance 的 DHCP 請求。

對於 flat_net,interface 是 ns-19a0ed3d-fe。 或許你們還記得,以前咱們看到的 DHCP interface 叫 tap19a0ed3d-fe(以下圖所示),並不是 ns-19a0ed3d-fe。

image584.png

從名稱上看,ns-19a0ed3d-fe 和 tap19a0ed3d-fe 應該存在某種聯繫,但那是什麼呢?

要回答這個問題,須要先搞懂一個概念:Linux Network Namespace,咱們下一節詳細討論。

 

blob.png

相關文章
相關標籤/搜索