Skip to content

Commit

Permalink
Use dhcpcd for network setup
Browse files Browse the repository at this point in the history
This has multiple advantages about the previous setup:

- Set up all available interfaces automatically
- Handle IPv6 variants properly (SLAAC vs. DHCPv6)

Add some further networking tools for easier debugging

Change-Id: Idf04a48c04127b2a40fdaea47e7eea39383b1125
  • Loading branch information
osfrickler authored and hrw committed Aug 8, 2022
1 parent de65cdb commit ded54d3
Show file tree
Hide file tree
Showing 7 changed files with 131 additions and 54 deletions.
42 changes: 28 additions & 14 deletions conf/buildroot-x86_64.config
Original file line number Diff line number Diff line change
Expand Up @@ -172,13 +172,14 @@ BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc"
# BR2_KERNEL_HEADERS_4_4 is not set
# BR2_KERNEL_HEADERS_4_9 is not set
# BR2_KERNEL_HEADERS_4_14 is not set
BR2_KERNEL_HEADERS_4_19=y
# BR2_KERNEL_HEADERS_4_19 is not set
# BR2_KERNEL_HEADERS_5_4 is not set
# BR2_KERNEL_HEADERS_5_10 is not set
BR2_KERNEL_HEADERS_5_10=y
# BR2_KERNEL_HEADERS_VERSION is not set
# BR2_KERNEL_HEADERS_CUSTOM_TARBALL is not set
# BR2_KERNEL_HEADERS_CUSTOM_GIT is not set
BR2_DEFAULT_KERNEL_HEADERS="4.19.219"
BR2_KERNEL_HEADERS_LATEST=y
BR2_DEFAULT_KERNEL_HEADERS="5.10.83"
BR2_PACKAGE_LINUX_HEADERS=y

#
Expand Down Expand Up @@ -284,7 +285,20 @@ BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST="4.19"
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10=y
BR2_TOOLCHAIN_HEADERS_LATEST=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST="5.10"
BR2_TOOLCHAIN_GCC_AT_LEAST_4_3=y
BR2_TOOLCHAIN_GCC_AT_LEAST_4_4=y
BR2_TOOLCHAIN_GCC_AT_LEAST_4_5=y
Expand Down Expand Up @@ -3058,7 +3072,9 @@ BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y
#
# bcusdk needs a toolchain w/ C++
#
# BR2_PACKAGE_BIND is not set
BR2_PACKAGE_BIND=y
# BR2_PACKAGE_BIND_SERVER is not set
BR2_PACKAGE_BIND_TOOLS=y
# BR2_PACKAGE_BIRD is not set

#
Expand Down Expand Up @@ -3110,7 +3126,7 @@ BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y
# BR2_PACKAGE_DANTE is not set
# BR2_PACKAGE_DARKHTTPD is not set
# BR2_PACKAGE_DEHYDRATED is not set
# BR2_PACKAGE_DHCPCD is not set
BR2_PACKAGE_DHCPCD=y
# BR2_PACKAGE_DHCPDUMP is not set
# BR2_PACKAGE_DNSMASQ is not set
# BR2_PACKAGE_DRBD_UTILS is not set
Expand Down Expand Up @@ -3202,7 +3218,7 @@ BR2_PACKAGE_IFUPDOWN_SCRIPTS=y
#
# iperf needs a toolchain w/ C++
#
# BR2_PACKAGE_IPERF3 is not set
BR2_PACKAGE_IPERF3=y
# BR2_PACKAGE_IPROUTE2 is not set
# BR2_PACKAGE_IPSET is not set
# BR2_PACKAGE_IPTABLES is not set
Expand Down Expand Up @@ -3274,10 +3290,7 @@ BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS=y
#
# BR2_PACKAGE_MOSQUITTO is not set
# BR2_PACKAGE_MROUTED is not set

#
# mrp needs a toolchain w/ threads, kernel headers >= 5.0
#
# BR2_PACKAGE_MRP is not set
# BR2_PACKAGE_MTR is not set

#
Expand Down Expand Up @@ -3320,7 +3333,7 @@ BR2_PACKAGE_NDISC6_RDISC6=y
# BR2_PACKAGE_NOIP is not set
# BR2_PACKAGE_NTP is not set
# BR2_PACKAGE_NUTTCP is not set
BR2_PACKAGE_ODHCP6C=y
# BR2_PACKAGE_ODHCP6C is not set
# BR2_PACKAGE_ODHCPLOC is not set
# BR2_PACKAGE_OLSR is not set
# BR2_PACKAGE_OPEN_LLDP is not set
Expand Down Expand Up @@ -3419,7 +3432,8 @@ BR2_PACKAGE_ODHCP6C=y
# BR2_PACKAGE_SSLH is not set
# BR2_PACKAGE_STRONGSWAN is not set
# BR2_PACKAGE_STUNNEL is not set
# BR2_PACKAGE_TCPDUMP is not set
BR2_PACKAGE_TCPDUMP=y
# BR2_PACKAGE_TCPDUMP_SMB is not set
# BR2_PACKAGE_TCPING is not set
# BR2_PACKAGE_TCPREPLAY is not set
# BR2_PACKAGE_THTTPD is not set
Expand All @@ -3430,7 +3444,7 @@ BR2_PACKAGE_ODHCP6C=y
#
# BR2_PACKAGE_TINYSSH is not set
# BR2_PACKAGE_TOR is not set
# BR2_PACKAGE_TRACEROUTE is not set
BR2_PACKAGE_TRACEROUTE=y
# BR2_PACKAGE_TRANSMISSION is not set
# BR2_PACKAGE_TUNCTL is not set
# BR2_PACKAGE_TVHEADEND is not set
Expand Down
64 changes: 30 additions & 34 deletions conf/busybox.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.33.2
# Thu Dec 30 11:03:25 2021
# Fri Dec 31 14:57:34 2021
#
CONFIG_HAVE_DOT_CONFIG=y

Expand Down Expand Up @@ -845,15 +845,15 @@ CONFIG_WATCHDOG=y
CONFIG_FEATURE_IPV6=y
# CONFIG_FEATURE_UNIX_LOCAL is not set
CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
CONFIG_VERBOSE_RESOLUTION_ERRORS=y
# CONFIG_FEATURE_TLS_SHA1 is not set
CONFIG_ARP=y
CONFIG_ARPING=y
# CONFIG_BRCTL is not set
# CONFIG_FEATURE_BRCTL_FANCY is not set
# CONFIG_FEATURE_BRCTL_SHOW is not set
CONFIG_DNSD=y
CONFIG_ETHER_WAKE=y
# CONFIG_DNSD is not set
# CONFIG_ETHER_WAKE is not set
# CONFIG_FTPD is not set
# CONFIG_FEATURE_FTPD_WRITE is not set
# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
Expand All @@ -863,22 +863,22 @@ CONFIG_ETHER_WAKE=y
# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
CONFIG_HOSTNAME=y
CONFIG_DNSDOMAINNAME=y
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_RANGES is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
CONFIG_HTTPD=y
CONFIG_FEATURE_HTTPD_RANGES=y
CONFIG_FEATURE_HTTPD_SETUID=y
CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
CONFIG_FEATURE_HTTPD_AUTH_MD5=y
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
# CONFIG_FEATURE_HTTPD_PROXY is not set
# CONFIG_FEATURE_HTTPD_GZIP is not set
# CONFIG_FEATURE_HTTPD_ETAG is not set
# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set
# CONFIG_FEATURE_HTTPD_DATE is not set
# CONFIG_FEATURE_HTTPD_ACL_IP is not set
CONFIG_FEATURE_HTTPD_ERROR_PAGES=y
CONFIG_FEATURE_HTTPD_PROXY=y
CONFIG_FEATURE_HTTPD_GZIP=y
CONFIG_FEATURE_HTTPD_ETAG=y
CONFIG_FEATURE_HTTPD_LAST_MODIFIED=y
CONFIG_FEATURE_HTTPD_DATE=y
CONFIG_FEATURE_HTTPD_ACL_IP=y
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
CONFIG_FEATURE_IFCONFIG_SLIP=y
Expand Down Expand Up @@ -930,8 +930,8 @@ CONFIG_NC_SERVER=y
CONFIG_NC_EXTRA=y
CONFIG_NC_110_COMPAT=y
CONFIG_NETSTAT=y
# CONFIG_FEATURE_NETSTAT_WIDE is not set
# CONFIG_FEATURE_NETSTAT_PRG is not set
CONFIG_FEATURE_NETSTAT_WIDE=y
CONFIG_FEATURE_NETSTAT_PRG=y
CONFIG_NSLOOKUP=y
CONFIG_FEATURE_NSLOOKUP_BIG=y
CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y
Expand All @@ -950,10 +950,10 @@ CONFIG_TC=y
CONFIG_FEATURE_TC_INGRESS=y
# CONFIG_TCPSVD is not set
# CONFIG_UDPSVD is not set
CONFIG_TELNET=y
CONFIG_FEATURE_TELNET_TTYPE=y
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
CONFIG_FEATURE_TELNET_WIDTH=y
# CONFIG_TELNET is not set
# CONFIG_FEATURE_TELNET_TTYPE is not set
# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
# CONFIG_FEATURE_TELNET_WIDTH is not set
# CONFIG_TELNETD is not set
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
Expand All @@ -968,8 +968,8 @@ CONFIG_FEATURE_TFTP_BLOCKSIZE=y
CONFIG_TLS=y
CONFIG_TRACEROUTE=y
CONFIG_TRACEROUTE6=y
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y
# CONFIG_TUNCTL is not set
# CONFIG_FEATURE_TUNCTL_UG is not set
CONFIG_VCONFIG=y
Expand All @@ -988,24 +988,20 @@ CONFIG_WHOIS=y
CONFIG_DHCPD_LEASES_FILE=""
# CONFIG_DUMPLEASES is not set
# CONFIG_DHCPRELAY is not set
CONFIG_UDHCPC=y
CONFIG_FEATURE_UDHCPC_ARPING=y
CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
# CONFIG_UDHCPC is not set
# CONFIG_FEATURE_UDHCPC_ARPING is not set
# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set
CONFIG_UDHCPC_DEFAULT_SCRIPT=""
# CONFIG_UDHCPC6 is not set
# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set

#
# Common options for DHCP applets
#
# CONFIG_FEATURE_UDHCP_PORT is not set
CONFIG_UDHCP_DEBUG=0
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
CONFIG_FEATURE_UDHCP_8021Q=y
# CONFIG_FEATURE_UDHCP_8021Q is not set
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n --timeout=60 -O staticroutes"

#
Expand Down
42 changes: 42 additions & 0 deletions src/etc/dhcpcd.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# vendorclassid is set to blank to avoid sending the default of
# dhcpcd-<version>:<os>:<machine>:<platform>
vendorclassid

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search
option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# Request a hostname from the network
option host_name

# Most distributions have NTP support.
option ntp_servers

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate SLAAC address using the Hardware Address of the interface
slaac hwaddr
# OR generate Stable Private IPv6 Addresses based from the DUID
#slaac private
29 changes: 29 additions & 0 deletions src/etc/init.d/S40network
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/sh
#
# Start the network....
#

case "$1" in
start)
printf "Starting network: "
/sbin/ifup lo
/sbin/dhcpcd
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
stop)
printf "Stopping network: "
/sbin/dhcpcd -k
/sbin/ifdown lo
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
restart|reload)
"$0" stop
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac

exit $?

6 changes: 0 additions & 6 deletions src/etc/network/interfaces

This file was deleted.

1 change: 1 addition & 0 deletions src/etc/passwd
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ operator:x:37:37:Operator:/var:/bin/sh
haldaemon:x:68:68:hald:/:/bin/sh
dbus:x:81:81:dbus:/var/run/dbus:/bin/sh
ftp:x:83:83:ftp:/home/ftp:/bin/sh
dhcpcd:x:98:99:dhcpcd:/var:/bin/sh
nobody:x:99:99:nobody:/home:/bin/sh
sshd:x:103:99:Operator:/var:/bin/sh
cirros:x:1000:1000:non-root user:/home/cirros:/bin/sh
1 change: 1 addition & 0 deletions src/etc/shadow
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ halt:*:10933:0:99999:7:::
uucp:*:10933:0:99999:7:::
operator:*:10933:0:99999:7:::
ftp:*:10933:0:99999:7:::
dhcpcd:*:10933:0:99999:7:::
nobody:*:10933:0:99999:7:::
cirros:$1$ecgqyiea$GZzgQPRzx7sFFoZ7p8ewU.:10933:0:99999:7:::

0 comments on commit ded54d3

Please sign in to comment.