Last active
March 11, 2019 20:27
-
-
Save Lewiscowles1986/f303d66676340d9aa3cf6ef1b672c0c9 to your computer and use it in GitHub Desktop.
Allows passthrough for bridges, wireless access-point's and range extenders
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
if [ "$EUID" -ne 0 ] | |
then echo "Must be root" | |
exit | |
fi | |
ADAPTER="eth0" | |
# Allow overriding from eth0 by passing in a single argument | |
if [ $# -eq 1 ]; then | |
ADAPTER="$1" | |
fi | |
#Uncomment net.ipv4.ip_forward | |
sed -i -- 's/#net.ipv4.ip_forward/net.ipv4.ip_forward/g' /etc/sysctl.conf | |
#Change value of net.ipv4.ip_forward if not already 1 | |
sed -i -- 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf | |
#Activate on current system | |
echo 1 > /proc/sys/net/ipv4/ip_forward | |
iptables -t nat -A POSTROUTING -o $ADAPTER -j MASQUERADE | |
iptables -A FORWARD -i $ADAPTER -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT | |
iptables -A FORWARD -i wlan0 -o $ADAPTER -j ACCEPT |
I got it working, here's what I had to do:
- First my /etc/network/interfaces file contents looks like this:
# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
#source-directory /etc/network/interfaces.d
#
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
# Added by rPi Access Point Setup
allow-hotplug wlan0
iface wlan0 inet static
address 10.0.0.1
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
- Next, I followed advice in the answer from Luis Godinez on Oct 6 '16 at 23:32 [here]
(https://raspberrypi.stackexchange.com/questions/24500/eth0-interface-not-starting-on-boot).- In a nutshell I enabled (
sudo apt-get update && sudo apt-get upgrade
maybe needed) "Predictable Network Interface Names" throughsudo raspi-config
> Advanced Options > Network interface names > Yes. - Then
vi /lib/udev/rules.d/73-usb-net-by-mac.rules
(not rules.d not rules, contrary to the referenced post), and changedNAME="$env{ID_NET_NAME_MAC}"
toNAME="eth0"
. - Reboot and it's working, including the passthrough functionality!
- In a nutshell I enabled (
Thanks a lot, I've tried several ways, but finally I just use your code, and it works!
@vicatcu yeah raspbian stretch has some awful decisions including the renaming of adapters. Try working with https://gist.github.com/Lewiscowles1986/390d4d423a08c4663c0ada0adfe04cdb as well to allow you to set /etc/network/interfaces
as you've indicated you have here.
Big Picture
- the script accepts an interface, it's documented above, use it for whatever your eth0 is called.
- this is only designed for raspbian without edits (although it should work on most vanilla debian-based distro's)
- the script linked helps get interfaces started if you've edited
/etc/network/interfaces
in a debian-based distro using the raspbian setup (to skip any networking if a single interface is defined in/etc/network/interfaces
...)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi @Lewiscowles1986, I used your excellent script to turn my Raspberry Pi 3 into an access point. I've just tried to add this adapter-passthrough script to
sudo crontab -e
as a@reboot
script as you suggested, but I'm not getting any love. In fact if I runifconfig
eth0 isn't even listed as an interface.My
/etc/network/interfaces
file contains the following contents:Can you spot what's wrong?