Preparing a Raspberry Pi to be used as a Gateway

Share Raspberry Pi Wi-Fi Internet to Ethernet

In this step, the Raspberry Pi must be connected to the Internet via Wi-Fi, and the PLC must be connected to the Raspberry Pi via the Ethernet connection.

You will now configure the Raspberry Pi to share the Wi-Fi Internet connection to Ethernet. Run the following commands on the Raspberry Pi.

1. (Optional) Update the Raspberry Pi:

sudo apt-get update
sudo apt-get upgrade

2. To configure the DHCP client, open the configuration file

sudo vi /etc/dhcpcd.conf

and paste denyinterfaces eth0 at the end of the file. Close the configuration file (Esc, :w (Enter), :q (Enter)).

3. Next, open the network interfaces

sudo vi /etc/network/interfaces

and paste the following lines at the end of the file:

auto eth0
allow-hotplug eth0
iface eth0 inet static
	address 192.168.66.1
	netmask 255.255.255.0
	network 192.168.66.0
	broadcast 192.168.66.255

Close the network interface file (Esc, :w (Enter), :q (Enter)).

4. Install and configure the DHCP service to automatically assign IP addresses for every device in the Ethernet Port. Install dnsmasq and create a new configuration:

sudo apt-get install dnsmasq
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo vi /etc/dnsmasq.conf

Add the following lines to the file

interface=eth0
listen-address=192.168.66.1
dhcp-range=192.168.66.50,192.168.66.100,12h
server=8.8.8.8
bind-interfaces
domain-needed
bogus-priv

and close the configuration (Esc, :w (Enter), :q (Enter)).

5. Reboot the Raspberry Pi.

sudo reboot

Afterwards, we need to reopen the SSH connection.

6. Now, we forward the Internet connection from Wifi to the Ethernet port where the PLC is connected by setting IPv4 forwarding. Open the /etc/systcl.conf file:

sudo vi /etc/sysctl.conf

Uncomment the following line by removing the # (line 28):

net.ipv4.ip_forward=1

Save and close the file (Esc, :w (Enter), :q (Enter)).

7. Activate IP forwarding by running the following command:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

8. Now, we install iptables and add firewall rules. Run the following commands one at a time:

sudo apt install iptables
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT 

9. Check that the changes were made and save the rules:

sudo iptables -L -n -v
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

To automatically reload these rules after every reboot, edit the /etc/rc.local file:

sudo vi /etc/rc.local

Paste the following line before exit 0:

iptables-restore < /etc/iptables.ipv4.nat

Save and close the file (Esc, :w (Enter), :q (Enter)).

10. To check the firewall settings, run

route

The routing table should look like this:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.2.1     0.0.0.0         UG    304    0        0 wlan1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     304  

Now, you can check the SDA console to see if the connection to the Gateway was established and if the PLC is connected.

Last updated