#!/bin/bash # Share Wifi with Eth device # # # This script is created to work with Raspbian Stretch # but it can be used with most of the distributions # by making few changes. # # Make sure you have already installed `dnsmasq` # Please modify the variables according to your need # Don't forget to change the name of network interface # Check them with `ifconfig` ip_address="192.168.2.1" netmask="255.255.255.0" dhcp_range_start="192.168.2.2" dhcp_range_end="192.168.2.100" dhcp_time="12h" eth="eth0" wlan="wlan0" sudo systemctl start network-online.target &> /dev/null sudo iptables -F sudo iptables -t nat -F sudo iptables -t nat -A POSTROUTING -o $wlan -j MASQUERADE sudo iptables -A FORWARD -i $wlan -o $eth -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i $eth -o $wlan -j ACCEPT sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" sudo ifconfig $eth $ip_address netmask $netmask # Remove default route created by dhcpcd sudo ip route del 0/0 dev $eth &> /dev/null sudo systemctl stop dnsmasq sudo rm -rf /etc/dnsmasq.d/* &> /dev/null echo -e "interface=$eth\n\ bind-interfaces\n\ server=176.103.130.130\n\ domain-needed\n\ bogus-priv\n\ dhcp-range=$dhcp_range_start,$dhcp_range_end,$dhcp_time" > /tmp/custom-dnsmasq.conf sudo cp /tmp/custom-dnsmasq.conf /etc/dnsmasq.d/custom-dnsmasq.conf sudo systemctl start dnsmasq