download Raspberry
OS Lite and write to SD
sudo dd if=2021-01-11-raspios-buster-armhf-lite.img of=??? bs=4M
Boot (we don’t need the USB adapter yet)
Set a new password for the user pi:
passwd
Authenticate as root:
sudo su
apt update;apt dist-upgrade
systemctl enable --now ssh
raspi-config
- change hostname
- reduce GPU memory
- wait for network before booting
Add testing repository and install wireguard
echo “deb http://archive.raspbian.org/raspbian testing main” > /etc/apt/sources.list.d/testing.list
printf 'Package: *\nPin: release a=testing\nPin-Priority: 50\n' | tee –append /etc/apt/preferences.d/limit-testing
apt update
apt install wireguard
Enable IPv4 Forwarding
echo “net.ipv4.ip_forward = 1” » /etc/sysctl.conf
Create a private key for the client
wg genkey
Calculate the corresponding public key
echo '(INSERT PRIVATE KEY)' | wg pubkey
Create client config
[Interface]
PrivateKey = RASPBERRYPRIVATEKEY
Address = 192.168.4.70/24
DNS = 192.168.0.1, 8.8.8.8
[Peer]
PublicKey = SERVERPUBLICKEY
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = example.com:12345
Append a segment to the server's wireguard config
[Peer] # raspberry
PublicKey = RASPBERRYPUBLICKEY
AllowedIPs = 192.168.4.70/32
Restart wireguard interface on the server
systemctl restart wg-quick@wg0.service
Back on the raspberry, move the client config to /etc/wireguard, e.g. /etc/wireguard/raspberry.conf
systemctl start wg-quick@raspberry
Verify that the interface is used, eg. traceroute google.com
Enable the service to make it permanent
systemctl enable wg-quick@raspberry
Install the DHCP server
apt install isc-dhcp-server
Plug in the USB adapter and check out it's interface name (should be eth1)
Edit interface config
/etc/network/interfaces.d/eth1
auto eth1
iface eth1 inet static
address 192.168.100.1
netmask 255.255.255.0
Edit this line in /etc/default/isc-dhcp-server:
INTERFACESv4=“eth1”
Edit
/etc/dhcp/dhcpd.conf:
option domain-name-servers 8.8.8.8, 8.8.8.4;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.255;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.100;
option routers 192.168.100.1;
}
systemctl restart isc-dhcp-server
allow NAT forwarding iptables rule:
iptables -t nat -A POSTROUTING -o raspberry -j MASQUERADE
Save the iptables config:
apt install iptables-persistent
iptables-save > /etc/iptables/rules.v4
Make sure the iptables config is loaded at boot:
echo '/sbin/iptables-restore < /etc/iptables/rules.v4' » /etc/rc.local