私はUbuntuを使用していますが、多くのインターフェイスがあります。 eth0
、これは私のインターネット接続であり、完全に私の制御外のDHCPサーバーから情報を取得します。
DHCPサーバーを作成したeth1
、eth2
、eth3
とeth4
があります。(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
を実行するとゲートウェイが正しく設定されているようですが、それは役に立たないため、起動時に正しいゲートウェイを設定する必要があり、むしろソースを見つけたいと思います。問題
私はこのテーマに関する専門家ではありませんが、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つだけあるはずです。そして、それは境界に向かっているか、ネットワークから出ているルーターに行く必要があります。常にip route list
を使用して、使用しているルーターを確認できます。
したがって、eth1
のeht2
および/e/n/interfaces
スタンザにはそれぞれ2つのエラーが実際にあります。
gateway
ディレクティブがそれ自体を指すことはできません。マシンが不明なIP
- addressを持つパケットの送信先を知らない場合、そのパケットを自分自身に転送するように指示する必要があるのはなぜですか?したがって、gateway
を自分自身に向けないでください。eth0
上にあり、それはdhcp
からの手段を取得しています。したがって、ここでgateway
を設定する必要はありません。したがって、/e/n/interfaces
からすべてのgateway
dirctivesを削除すると、動作します(より良い)。
ところで、network
とbroadcast
は両方ともaddress
とnetmask
から計算されるので、それらを指定する必要はありません。実際に間違っていると、奇妙なエラーが発生する可能性があるため、指定しない方が良いでしょう。 https://askubuntu.com/a/432876/999 を参照してください
独自のdhcpサーバーを持っているLANのクライアントに対して、dhcpサーバーの構成でマシンを使用するように指示する必要があります。したがって、eth1
では、クライアントに10.0.1.1
をルーターとして使用するように指示する必要があります。 /e/n/interfaces
ではできません。