Is there a way to disable the DHCP client in Raspbian Linux on a Rasperry Pi?
This scenario sounds really weird because your setup should be working as you describe—and hope for it to work—if there is a static IP set in /etc/network/interfaces
. That said, this discussion on the official Raspberry Pi site focuses on the issue with the user “rpdom” stating this on the post dated “Thu May 28, 2015 6:21 am”:
This happens in the latest updates. It is caused by the new dhcp client ignoring what the interfaces files does and doing its own thing in addition... seems crazy to me. I'd look at how to reconfigure the dhcp client (can't rememeber which it is or how to do it, I'm still on the old one which works for me), disabling it, or removing it (if possible).
Deeper in the thread user “KLL” suggests the following other post in their response dated “Mon Aug 10, 2015 12:59 pm.” According to “knute”:
Somewhere along the way an upgrade modified my
/etc/network/interfaces
file with the 'manual' word instead of dhcp or static and I ended up with two IP addresses, my static one and a dhcp address. I finally had time to play with it and found out thatdhcpcd5
works differently than whatever was in it before. To get just your static address, do not modify/etc/network/interfaces
. Put back the 'manual' word if you changed it and instead modify/etc/dhcpcd.conf
as shown in the example from the docs.
So the idea is that dhcpcd5
’s behavior has changed in one of the upgrades. And suggestion to solve the issue is to remove any changes from /etc/network/interfaces
and instead adjust the settings in /etc/dhcpcd.conf
to get a static IP address; example config below:
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
More info on the contents of dhcpcd.conf
can be found on the official man page for it.
That said, another idea is to retain the settings you have in /etc/network/interfaces
but then edit /etc/dhcpcd.conf
to add the line denyinterfaces eth0
to tell the DHCP daemon to completely ignore eth0
. Either solution should work, but one solution might be a more preferable solution depending on your overall networking needs/requirements.
what worked for me is using a /etc/network/interfaces as in the original question and simply removing the dhcp client:
apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common
I must say that unfortunately none of the solutions proposed here worked for me. But after a long battle with DHCP, I was finally able to solve the problem:
vi /etc/systemd/network/eth0.network
change:
[Match]
Name=eth0
[Network]
DHCP=yes
to:
[Network]
DHCP=no
hope this helps.
The preferable way to disable any service such as dhcpcd is use the system management functions. You'll need to reboot for it take effect - unless you stop the service as well.
For Jessie (which uses systemd
management):
sudo systemctl disable dhcpcd.service
And for the older Wheezy (System-V
management):
sudo update-rc.d dhcpcd disable
But if you do disable it then you need to make sure you've got a static ip configuration in /etc/network/interfaces
otherwise your interfaces won't get an IP address.