via: http://raspberrypi.stackexchange.com/questions/37920/how-do-i-set-up-networking-wifi-static-ip

 

The Raspbian released in May 2015 changed the way networking (and particularly WiFi) works.

This applies to the current Foundation releases of Raspbian Jessie and the last Raspbian Wheezy 2015-05-05 (no longer available).

This makes all the existing tutorials obsolete. (Note the tutorials can still be used if you want to use the older style of manual configuration, but you need to disable dhcpcd.)

sudo systemctl stop dhcpcd.service will stop (deactivate) dhcpcd.The newer configuration (based on dhcpcd) has many advantages (and a few minor drawbacks) and is recommended for new users.

How to setup Raspbian Networking

If you are using an Ethernet connection with a router there should be no configuration required and it should work out of the box.

If you are using WiFi and the GUI set up by following the Foundation Guidelineshttps://www.raspberrypi.org/documentation/configuration/wireless/README.md

If you are using WiFi from the Command Line set up /etc/wpa_supplicant/wpa_supplicant.conf by following https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md This is the only way to set up a network which does not broadcast SSID.

This can also be used to setup a 'Headless' system e.g. using a serial console cable, but it MUCH easier if you can borrow a monitor and keyboard for setup. See below for another possible method using an Ethernet cable to a PC.

Networking Files

If you are running a recent Raspbian /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

If the Foundation had setup dhcpcd as the author intended /etc/network/interfaces would not be needed. The 10-wpa_supplicantThe file /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="ESSID"
    psk="Your_wifi_password"
}

If you need to connect to a private network (i.e. no broadcast SSID) include the line scan_ssid=1inside network={⋯}NOTE there are many other options which can be used see man wpa_supplicant.conf.

Setup a Static IP Address

Questions about setting Static IP Address are among the most common on this site. There are very many tutorials (many wrong, obsolete or incomplete).

Disclaimer

Before proceeding I feel obliged to state that setting up a static address is NOT recommended. Telecommunications Engineers do not do this. Static IP Addresses can be the bane of a Network Administrator's life. There are situations where Static IP Addresses are necessary e.g. if you are running a DHCP server, or running on an isolated network with no DHCP server.

If you are determined to proceed anyway you should make sure you get it right. Adapted fromFoundation Network Tutorial

Find the Settings of your local Network

This is most easily done with the Pi itself, using DHCP, but can be done on any computer on your network, although the commands may differ on other systems.

Run either of the following (depending on whether you are using Ethernet or WiFi):

ip -4 addr show dev eth0 | grep inet
ip -4 addr show dev wlan0 | grep inet

which should give an output like:

inet 10.1.1.30/24 brd 10.1.1.255 scope global eth0
inet 10.1.1.31/24 brd 10.1.1.255 scope global wlan0

The first address is the IP address of your Pi on the network, and the part after the slash is the network size. It is highly likely that yours will be a /24.

The second address is the brd (broadcast) address of the network.

Find the address of your router (or gateway)

ip route | grep default | awk '{print $3}'

10.1.1.1

Finally note down the address of your DNS server, which is often the same as your gateway.

cat /etc/resolv.conf

# Generated by resolvconf
nameserver 10.1.1.1

Then follow ONE of the following options. (There are other methods not documented here. These are the most common on Raspbian.)

Network Interfaces method

Configure a static network adddress on your Pi in /etc/network/interfaces

auto eth0
iface eth0 inet static
        address 10.1.1.30
        netmask 255.255.255.0
        gateway 10.1.1.1

allow-hotplug wlan0
iface wlan0 inet static
        address 10.1.1.31
        netmask 255.255.255.0
        gateway 10.1.1.1
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

address is the address from the command above (or another unused address on the same network),

netmask 255.255.255.0 corresponds to network size/24.

gatewayYou can also specify dns-nameservers, but this is generally not necessary.

The broadcast is automatically derived from address and netmask and need not be specified.

For more detail see https://wiki.debian.org/NetworkConfigurationYou can set either or both eth0 or wlan0

Then disable the DHCP client daemon and switch to standard Debian networking:

sudo systemctl disable dhcpcd
sudo systemctl enable networking

Reboot for the changes to take effect:

sudo reboot

dhcpcd method

Leave /etc/network/interfacesEdit /etc/dhcpcd.conf

Here is an example which configures a static address, routes and dns.
       interface eth0
       static ip_address=10.1.1.30/24
       static routers=10.1.1.1
       static domain_name_servers=10.1.1.1

       interface wlan0
       static ip_address=10.1.1.31/24
       static routers=10.1.1.1
       static domain_name_servers=10.1.1.1

ip_address is the address and size from the command above (or another unused address on the same network),

routers is the address of your router (or gateway).

domain_name_servers is the DNS address(es) from /etc/resolv.conf.

(see man dhcpcd.conf)There is a good article on dhcpcd at https://wiki.archlinux.org/index.php/dhcpcd The Fallback profile is an alternative to static IP

Connecting a Computer to the Pi

Recent versions of Raspbian (which use dhcpcd) allow ssh to work over a link-local address andavahi

This means you can plug the Pi into a Computer (with an Ethernet cable) or a local network router and connect without knowing the IP address.

You can easily connect from Linux and OS X with ssh pi@hostname.local (the default hostname is raspberrypi) This should work with popular GUI ssh programs. This is sometimes problematic with some versions of Windows and networks which use .local in a non-standard way. (Seehttps://en.wikipedia.org/wiki/.local)NOTE .local resolution does not always work e.g. in rsync. The following should resolve IP (and can be included in bash scripts)

RemotePi=$(getent hosts hostname.local | awk '{ print $1 }')

If you have multiple Pi you need to make sure each Pi has a unique hostname.

You can use a crossover cable, but you don't need one (most modern interfaces automatically detect).

One drawback of direct connection is that the Pi will have no Internet access and the date will not be set. You can copy the date from the host by running ssh pi@hostname.local sudo date -s$(date -Ins)

Scope:

This tutorial is about setting up a normal Raspbian installation to access the internet using the included software. It also covers connections to other computers on the same network.

It is primarily aimed at helping new users struggling to get their Pi (especially WiFi) working .

It does NOT cover:-

  • Other Network Managers.
  • Running advanced networking on the Pi (e.g. 

DHCP

  • Use of 

ipv6

  •  (although if you have an 

ipv6

  • Alternate networking setups. (There are many different ways of setting up networking.)