aboutsummaryrefslogtreecommitdiff
path: root/bootstrap.d/20-networking.sh
blob: c9f866f4c24d3b1cbc5adcfbb9fa3f6eb85091ae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#
# Setup Networking
#

# Load utility functions
. ./functions.sh

# Set up IPv4 hosts
install_readonly files/network/hostname $R/etc/hostname
sed -i "s/^rpi2-jessie/${HOSTNAME}/" $R/etc/hostname

install_readonly files/network/hosts $R/etc/hosts
sed -i "s/rpi2-jessie/${HOSTNAME}/" $R/etc/hosts

if [ "$NET_ADDRESS" != "" ] ; then
  NET_IP=$(echo ${NET_ADDRESS} | cut -f 1 -d'/')
  sed -i "s/^127.0.1.1/${NET_IP}/" $R/etc/hosts
fi

# Set up IPv6 hosts
if [ "$ENABLE_IPV6" = true ] ; then
  cat <<EOM >>$R/etc/hosts

::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
EOM
fi

# Place hint about network configuration
install_readonly files/network/interfaces $R/etc/network/interfaces

if [ "$ENABLE_DHCP" = true ] ; then
  # Enable systemd-networkd DHCP configuration for interface eth0
  install_readonly files/network/eth.network $R/etc/systemd/network/eth.network

  # Set DHCP configuration to IPv4 only
  if [ "$ENABLE_IPV6" = false ] ; then
    sed -i "s/^DHCP=yes/DHCP=v4/" $R/etc/systemd/network/eth.network
  fi

else # ENABLE_DHCP=false
  cat <<EOM >$R/etc/systemd/network/eth.network
[Match]
Name=eth0

[Network]
DHCP=no
Address=${NET_ADDRESS}
Gateway=${NET_GATEWAY}
DNS=${NET_DNS_1}
DNS=${NET_DNS_2}
Domains=${NET_DNS_DOMAINS}
NTP=${NET_NTP_1}
NTP=${NET_NTP_2}
EOM
fi

# Enable systemd-networkd service
chroot_exec systemctl enable systemd-networkd

# Enable network stack hardening
if [ "$ENABLE_HARDNET" = true ] ; then
  install_readonly files/sysctl.d/82-rpi-net-hardening.conf $R/etc/sysctl.d/82-rpi-net-hardening.conf

  # Enable resolver warnings about spoofed addresses
  install_readonly files/network/host.conf $R/etc/host.conf
fi