summaryrefslogtreecommitdiff
path: root/dhcp-server.sh
blob: ac4b75c82ad452b3fdd8a2381614179207170232 (plain)
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
#!/bin/bash
# Turn ethernet cable into DHCP device
set -xeuo pipefail

DEVICE='ens9'
INTERNET='wlp3s0'
ROUTERIP='192.168.123.1'

echo 'Restarting Device'
ip link set "$DEVICE" down
ip link set "$DEVICE" up
# Check if ip already assigned
IP_ASSIGNED=$(ip a | grep -A 5 ens9 | grep 192.168.123.1)
if [ -z "$IP_ASSIGNED" ]; then
    ip addr add "$ROUTERIP"/24 dev "$DEVICE"  # arbitrary address
fi

echo 'Allowing ip forwarding/enabling Nat'
sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o "$INTERNET" -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i "$DEVICE" -o "$INTERNET" -j ACCEPT

echo 'Creating /etc/dhcpd.conf file'
#Config file: /etc/dhcpd.conf
cat > /etc/dhcpd.conf <<- EOM
option domain-name-servers 8.8.8.8, 8.8.4.4;
option subnet-mask 255.255.255.0;
option routers 192.168.123.100;
subnet 192.168.123.0 netmask 255.255.255.0 {
    range 192.168.123.150 192.168.123.250;
}
EOM
#Database file: /var/lib/dhcp/dhcpd.leases
# cat this to see if a device has been assigned a lease
#PID file: /var/run/dhcpd.pid
pkill dhcpd || true
dhcpd $DEVICE