IPアドレスが割り当てられない!

お疲れ様です。「IPアドレスが割り当てられない!」作問者の岩橋です。DHCPサーバ一つで異なるセグメントのクライアントにもIPを振りたいシチュエーションがあったき、DHCP relay agentを使ってDHCP requestを通過させるという問題でした。

設定中にIPの設定を吹き飛ばしてしまったのか、リセット依頼がたくさん来ました。

問題  

問題文  

VM(DHCP_Client)に 192.168.12.0/26 の範囲のIPアドレスを割り当てたいのだが、うまくいかない。 既存のDHCPサーバ(DHCP_Server)に既に導入されているdnsmasqを利用して、IPアドレスが割り当てられるように設定を変更してほしい。

開始状態  

DHCP_Clientの eth0 にIPアドレスが割り当てられていない

終了状態  

DHCP_Clientの eth0 にDHCP_Serverで動いているdnsmasqから 192.168.12.0/26 のIPアドレスが割り当てられている

解説  

この問題のトポロジーは次のようなものでした、

###############                 ##########                 ###############
# DHCP_Client # (eth0)---(eth0) # Router # (eth1)---(eth0) # DHCP_Server #
###############                 ##########                 ###############

Routerの設定  

この図からわかるように、DHCP_Routerの通信がDHCP_Clientに到達するためにはRouterを通る必要があります。しかし、DHCP Requestパケットは初期状態ではRouterを通過できません。
そこで、RouterDHCP Relay Agent機能を有効にします。
VyOSにログイン後、設定モードに移行し次のコマンドを実行します。

conf
set service dhcp-relay interface eth0
set service dhcp-relay interface eth1
set service dhcp-relay server 192.168.12.193
commit
save

この操作により、DHCP_ClientによるDHCP RequestRouterを通過し、DHCP_Serverに到達することができます。

DHCP_Serverの設定  

次にDHCP_Serverの設定を行います。
終了状態より、DHCP_Clientに192.168.12.0/26のIPを振らなければならないのに対し、既存の設定では/24になっています。そこで/etc/dnsmasq.conf内のサブネットマスクを255.255.255.0(/24)から255.255.255.194(/26)に修正してdnsmasqをrestartします。

DHCP_Clientの設定  

最後にDHCP_Clientの設定を行います。
具体的には、DHCPによりIPアドレスを自動で振られるようにします。

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

採点基準  

  • dnsmasqの設定の修正 50%
  • Vyosの設定の修正 50%