web-dev-qa-db-ja.com

Ubuntuに複数のインターフェースを持つDHCPサーバーは、デフォルトゲートウェイを破壊します

私はUbuntuを使用していますが、多くのインターフェイスがあります。 eth0、これは私のインターネット接続であり、完全に私の制御外のDHCPサーバーから情報を取得します。

DHCPサーバーを作成したeth1eth2eth3eth4があります。(ISC DHCP-Server)

それはうまくいくようで、インターネットに面したインターフェイス上の外部DHCPサーバーからIPアドレスを取得します。

ただし、何らかの理由で、eth0-eth1のローカルDHCPサーバーをインストールした後、eth4のゲートウェイがねじ込まれたようです。 (eth0のIPを取得し、ローカルネットワーク上の他のものをpingできるのでそう思いますが、インターネットにアクセスできません)。

eth0にある私の/etc/network/interfaces固有の情報:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
  address 10.0.1.1
  netmask 255.255.255.0
  network 10.0.1.0
  broadcast 10.0.1.255
  gateway 10.0.1.1
  mtu 8192


auto eth2
iface eth2 inet static
  address 10.0.2.1
  netmask 255.255.255.0
  network 10.0.2.0
  broadcast 10.0.2.255
  gateway 10.0.2.1
  mtu 8192

私の/etc/default/isc-dhcp-server

INTERFACES="eth1 eth2 eth3 eth4"

では、eth0をリッスンしないように指示したときに、ローカルDHCPサーバーがeth0のゲートウェイを混乱させるのはなぜですか?誰もが問題を見たり、私はそれを修正するために何ができますか?

問題は確かにゲートウェイにあるようです。 netstat -nrの結果:

0.0.0.0 --- 10.X.X.X ---- 0.0.0.0 --- UG 0 0 0 eth3

あるべきだった

0.0.0.0 129.2XX.X.X 0.0.0.0 UG 0 0 0 eth0

そのため、何らかの理由で、ローカルDHCPサーバーがネットワークDHCPから取得したゲートウェイをオーバーライドします。

編集:dhcp.confは次のようになります(eth1サブネットの情報のみを含めました):

ddns-update-style none;

not authoritative;

subnet 10.0.1.0 netmask 255.255.255.0 { interface eth1; 
option domain-name "example.org"; 
option domain-name-servers ns1.example.org, 
ns2.example.org; 
default-lease-time 600; 
max-lease-time 7200;
range 10.0.1.10 10.0.1.100;
Host camera1_1 { hardware ethernet 00:30:53:11:24:6E; fixed-address 10.0.1.10; }
Host camera2_1 { hardware ethernet 00:30:53:10:16:70; fixed-address 10.0.1.11; } 
}

また、端末で/etc/init.d/networking restartを実行するとゲートウェイが正しく設定されているようですが、それは役に立たないため、起動時に正しいゲートウェイを設定する必要があり、むしろソースを見つけたいと思います。問題

3
Henrik Alstad

私はこのテーマに関する専門家ではありませんが、DHCPパケットのブロードキャストの性質により、ローカルDHCPサーバーは、構成したリッスンインターフェイスに関係なく、常にローカルで発生した要求に応答するものと思われます。

したがって、ローカルクライアントからのオファーを拒否するために、dhclient.confに「拒否」ステートメントを設定することをお勧めします。

reject 10.0.1.1;
reject 10.0.2.1;

(複数のリジェクトステートメントを使用できると推測しているだけです。マニュアルページは不明確です。)

他にも試してみることがありますが、とにかく最初の仮定が間違っているかもしれません。私はいつもこれが何が起こっているかを診断するのに役立つツールだと思っています。

apt-get install dhcpdump
dhcpdump -i eth1

PS:eth0、eth1、eth2などを適切に分離したい場合は、VLANを使用してレイヤー2でトラフィックを分離することを検討してください。

1
Will Daniels

コンピューターにデフォルトゲートウェイが1つだけあるはずです。そして、それは境界に向かっているか、ネットワークから出ているルーターに行く必要があります。常にip route listを使用して、使用しているルーターを確認できます。

したがって、eth1eht2および/e/n/interfacesスタンザにはそれぞれ2つのエラーが実際にあります。

  1. gatewayディレクティブがそれ自体を指すことはできません。マシンが不明なIP- addressを持つパケットの送信先を知らない場合、そのパケットを自分自身に転送するように指示する必要があるのはなぜですか?したがって、gatewayを自分自身に向けないでください。
  2. マシンにはデフォルトゲートウェイを1つだけ(または何も)配置しないでください。そして、それは外を指しているはずです。外部へのインターフェースはeth0上にあり、それはdhcpからの手段を取得しています。したがって、ここでgatewayを設定する必要はありません。

したがって、/e/n/interfacesからすべてのgateway dirctivesを削除すると、動作します(より良い)。

ところで、networkbroadcastは両方ともaddressnetmaskから計算されるので、それらを指定する必要はありません。実際に間違っていると、奇妙なエラーが発生する可能性があるため、指定しない方が良いでしょう。 https://askubuntu.com/a/432876/999 を参照してください

独自のdhcpサーバーを持っているLANのクライアントに対して、dhcpサーバーの構成でマシンを使用するように指示する必要があります。したがって、eth1では、クライアントに10.0.1.1をルーターとして使用するように指示する必要があります。 /e/n/interfacesではできません。

1
Anders