#!/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_and_network_mask_in_CDIR_notation="192.168.2.1/24" dhcp_range_start="192.168.2.2" dhcp_range_end="192.168.2.100" dhcp_time="12h" dns_server="1.1.1.1" 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 ip link set $eth down sudo ip link set $eth up sudo ip addr add $ip_address_and_network_mask_in_CDIR_notation dev $eth # 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 bind-interfaces server=$dns_server domain-needed bogus-priv 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