web-dev-qa-db-ja.com

dnsmasqを使用して複数のサブネットにサービスを提供する

私はdnsmasqの使用にかなり慣れていないので、ラボ環境で引き続き使用したいと思います。ただし、新しいので、使用するコマンド/ファイルがわかりません。私は2日間調査を行い、環境がどのように構成されているかを学びました。この時点で、VM全体をやり直したいと思っています。

終了状態:dnsmasqを実行しているVMを、それぞれが独自のサブネットを持つ3つのVLANのDNSサーバーとDHCPサーバーの両方として機能できるように構成したいと思います。

私の環境:

  • 3つの仮想NICを備えたubuntu14.04サーバーを備えたVMwareVM
  • 各NICはvmware分散スイッチポートグループに割り当てられ、分散スイッチにはVLANがトランクされています
  • 各ポートグループには1つのVLANが割り当てられます
  • 3つの(サンプル)サブネットは、10.1.1.0/24、10.2.1.0/24、および10.2.2.0/24です。
  • ルータはCiscoCatalyst3560です。

誰かがdnsmasqを設定して目的の最終状態に到達する方法を段階的に説明できますか?これは私を助けるだけでなく、他の人が将来の使用のためにこれらの指示を持つことができます。

環境固有の詳細があまり多くないようにしたいのですが(より広い聴衆に適用できるようにするため)、明確にする必要があるものがあれば教えてください。

私がこれまでに試したこと:

  • / etc/Networks/interfacesファイルで各NICのIPアドレス、ネットマスク、ネットワーク、およびブロードキャストを宣言します。最初のインターフェイスにゲートウェイとネームサーバーのオプションを追加しましたが、機能しません。

  • 有望そうに見える1つの質問/回答は、これを構成に入れることを提案しました:10.2.2.1 dev eth1を介したポストアップルートアド10.2.2.10、10.1.1.1 dev eth2を介したポストアップルートアド10.1.1.10、しかしそれはそうではありませんでしたどちらでも動作します。

  • Dnsmasq configで2種類のリスニングを試しました。1つはnicに割り当てた静的IPに基づいており、もう1つはインターフェイス名に基づいています。

    interface=eth0 no-dhcp-interface=eth0 interface=eth1 interface=eth2 no-dhcp-interface=eth1 no-dhcp-interface=eth2

  • オプション3を設定して、各ゲートウェイと各インターフェースの範囲を指定しました:dhcp-range=eth0,10.2.1.121,10.1.1.249,24hdhcp-option=eth0,3,10.2.1.1

  • オプション6を設定しましたが、コマンドdnsmasq -yを実行するように指示され、バインディングエラーが発生し続けました。だから私はそのオプションをコメントアウトしました。しかし、これは私が持っていたものです:dhcp-option=eth0,6,10.2.1.10

今のところ、10.1.1.0/24サブネットのVMを静的に指定すると、他のサブネット上の他のVMにpingを送信できます。しかし、10.1.1.10(そのサブネットのdnsmasq nicに割り当てられているip addr)にpingしようとすると、解決しません。 dnsmasqサーバーは、構成された最初のサブネット(10.2.1.0/24)でも引き続き機能しますが、他の2つのサブネットでも機能させたいと考えています。

また、明確にするために、私がそれが機能しないと言うとき、私が新しいサブネットの1つに持っているテストVMは、そのサブネットのdns addrにpingできず、インターネットにアクセスできないことを意味します。

ですから、言い換えると、私は上記の最終状態に到達したいと思っています。コミュニティは、エンジニアのためにこのタイプの環境を設定する方法を段階的に説明することで、より多くのメリットが得られると思います。現在の状態を最終状態に移行するために必要なことを理解する必要があります。

事前に助けてくれてありがとう!

2
John Quicksall

私は以前にこの種のことを扱ったことがある私の友人と話をしました、そしてこれが私たちが環境を最終状態にするためにしたことです。

まず、dnsmasq -yを使用する必要はありませんでした。これは、dnsmasqサービスとテストVMを再起動するとすぐに機能しました。

最初に行ったのは、dnsmasqサーバーを修正することでした。/etc/network/interfacesで、そのNICに必要なIPアドレスを指定し、255.255.255.0のネットマスクを使用して、そのNICのネットワークを定義します。次のようになります。

auto eth1
iface eth1 inet static
 address 10.2.2.10
 netmask 255.255.255.0
 network 10.2.2.0
 broadcast 10.2.2.255

唯一の変更は、これらの3行がすでに存在するeth0への変更です。それらが必要かどうかはわかりませんが(うまくいけば、他の誰かがそれを明確にすることができます)、これは私が追加したものです:

up route add default gw 10.2.1.1
dns-search      my.lab
dns-nameservers <Corp-DNS-server>

また、2つのポストアップルートラインは不要だったので削除しました。

最後に、dnsmasq.confを修正する必要がありました。ここで、loインターフェースを追加し、no-dhcp-interfaceをコメント化しました。

interface=lo
interface=eth0
interface=eth1
interface=eth2
#no-dhcp-interface=eth0
#no-dhcp-interface=eth1
#no-dhcp-interface=eth2

サーバーを修正しました。最終状態を達成するための次のことは、VLAN間通信を許可するようにルーターを構成することです。私はこの質問の前にすでにそれを行っていましたが、ここにその構成を行うための記事があります: http://www.Cisco.com/c/en/us/support/docs/lan-switching/inter- vlan-routing/41860-howto-L3-intervlanrouting.html

最後に、テストvmがネームサーバーをresolv.confに追加していないことがわかったので、tailというファイルを/etc/resolvconf/resolv.conf.d/に追加し、そのサブネットのdnsサーバーのIPを追加しました。

nameserver 10.1.1.10

それが完了すると、apt-get updateを実行して、DNS名にpingを実行することができました。次に、テストvmのインターフェイスファイルを変更して、dhcpアドレスを取得し、再起動すると、dhcpアドレスを受信できるようになりました。

これが皆さんのお役に立てば幸いです。明確にしたい場合は、コメントを残してください。

2
John Quicksall