
静的 IP のみを使用する必要がある Linux サーバー (OS として Raspbian を使用する Rasperry Pi) があります。
しかし、DHCP サーバーからも IP を取得していることに気付きました (DHCP によって付与される IP は です192.168.111.2
)。ネットワーク設定によると、サーバーは静的 IP ( 192.168.111.100
) のみを使用する必要があります。
内容/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.111.100
netmask 255.255.255.0
gateway 192.168.111.1
dns-nameservers ip1 ip2
静的構成を使用しているにもかかわらず、DHCP によって割り当てられた IP を使用してデバイスに SSH 接続できます。また、ntpd
正しい IP だけでなく間違った IP も使用しているようです。
Netstat の出力:
udp 0 0 192.168.111.2:123 0.0.0.0:* 2774/ntpd
udp 0 0 192.168.111.100:123 0.0.0.0:* 2774/ntpd
ifconfig
IPによると、192.168.111.2
使用されていません:
eth0 Link encap:Ethernet HWaddr b8:27:eb:be:18:1c
inet addr:192.168.111.100 Bcast:192.168.111.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:138099 errors:0 dropped:0 overruns:0 frame:0
TX packets:81146 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:95954711 (91.5 MiB) TX bytes:27076870 (25.8 MiB)
ps -ef | grep dhcp
DHCP デーモンが実行されていることがわかります:
root 2000 1 0 Oct07 ? 00:00:06 /sbin/dhcpcd
DHCP
デーモンの起動を無効にして、サーバーが静的のみを使用するようにするにはどうすればよいですか?
答え1
このシナリオは、静的IPが設定されていれば、説明どおりに動作するはずであり、動作することを期待しているため、非常に奇妙に聞こえます/etc/network/interfaces
。とはいえ、Raspberry Pi公式サイトでのこの議論この問題に焦点を当てているのは、ユーザー「rpdom」が「2015年5月28日木曜日午前6時21分」の投稿で次のように述べていることです。
これは最新のアップデートで発生します。これは、新しい DHCP クライアントがインターフェイス ファイルの動作を無視し、さらに独自の動作を実行するために発生します... 私にはおかしいように思えます。DHCP クライアントを再設定する方法 (どのクライアントか、またその方法は思い出せません。まだ古いクライアントを使っていますが、私にとっては問題なく動作しています)、DHCP クライアントを無効にする方法、または削除する方法 (可能な場合) を検討します。
スレッドの奥深くでユーザー「KLL」が示唆している次の他の投稿「2015年8月10日月曜日午後12時59分」の返信で、「knute」によると:
アップグレードの途中で、
/etc/network/interfaces
dhcp または static の代わりに 'manual' という単語を使用してファイルが変更され、静的 IP アドレスと dhcp アドレスの 2 つの IP アドレスが作成されました。ようやく時間ができ、dhcpcd5
以前のものとは異なる動作をすることがわかりました。静的アドレスだけを取得するには、 を変更しないでください。変更した場合は 'manual' という単語を元に戻し、ドキュメントの例のように/etc/network/interfaces
変更してください 。/etc/dhcpcd.conf
dhcpcd5
つまり、 の動作はアップグレードの 1 つで変更されたと考えられます。 この問題を解決するには、 からの変更をすべて削除し/etc/network/interfaces
、代わりに の設定を調整して/etc/dhcpcd.conf
静的 IP アドレスを取得することをお勧めします。設定例を以下に示します。
static <value>
Configures a static <value>. If you set ip_address then dhcpcd
will not attempt to obtain a lease and just use the value for the
address with an infinite lease time.
Here is an example which configures a static address, routes and
dns.
interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
内容の詳細についてはdhcpcd.conf
、公式マニュアルページ。
とはいえ、別のアイデアとしては、 の設定を保持した/etc/network/interfaces
まま、の/etc/dhcpcd.conf
行を追加して編集しdenyinterfaces eth0
、DHCP デーモンに を完全に無視するように指示する方法がeth0
あります。どちらの解決策も機能するはずですが、全体的なネットワークのニーズ/要件によっては、1 つの解決策の方が適している場合があります。
答え2
私の場合は、元の質問のように /etc/network/interfaces を使用し、DHCP クライアントを削除するだけでうまくいきました。
apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common
答え3
dhcpcd などのサービスを無効にするには、システム管理機能を使用するのが望ましい方法です。サービスも停止しない限り、有効にするには再起動する必要があります。
Jessie(管理を使用systemd
)の場合:
sudo systemctl disable dhcpcd.service
そして、古いWheezy(System-V
管理)の場合:
sudo update-rc.d dhcpcd disable
ただし、これを無効にする場合は、静的 IP 構成が設定されていることを確認する必要があります。/etc/network/interfaces
そうしないと、インターフェイスに IP アドレスが割り当てられません。
答え4
Raspbian Jessie 2017-01-11 で必要な作業の概要は次のとおりです。
/etc/network/interfaces を編集して静的アドレス スタンザを追加し、静的インターフェイス (この場合は eth0) への他の参照を削除します。auto 行は重要です。そうしないと、インターフェイスが起動時に開始されません。
auto eth0
iface eth0 inet static
address 192.168.44.17
netmask 255.255.255.0
gateway 192.168.44.27
次に、dhcpcd を無効にして、標準ネットワークを有効にします。
- dhcpcd を無効にする:
systemctl disable dhcpcd.service
- ネットワークを有効にする:
systemctl enable networking
- リブート
2017-01-11リリースのRaspbian Jessieはsystemdのネットワークを使用していないようです