Internet Connection Sharing: Difference between revisions
→Usage: Add missing nftable commands |
→Share via ethernet: sharing with NetworkManager: very easy, as long as you update the firewall accordingly |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 13: | Line 13: | ||
Here <code>eth0</code> is the ethernet interface connected to the internet, and <code>wlan0</code> is the wifi interface to share the internet connection with a wifi hotspot. However, these names may not be the same on your system. To check the name of your hardware interface use the command <code>ifconfig</code> or <code>ifconfig | grep ^[^:]*:</code> It will list network adapters on your system. Then modify command accordingly <code>sudo create_ap <wifiInterfaceName> <ethernetInterfaceName> MyAccessPoint <Password></code> | Here <code>eth0</code> is the ethernet interface connected to the internet, and <code>wlan0</code> is the wifi interface to share the internet connection with a wifi hotspot. However, these names may not be the same on your system. To check the name of your hardware interface use the command <code>ifconfig</code> or <code>ifconfig | grep ^[^:]*:</code> It will list network adapters on your system. Then modify command accordingly <code>sudo create_ap <wifiInterfaceName> <ethernetInterfaceName> MyAccessPoint <Password></code> | ||
=== Configuration === | === Configuration === | ||
Line 36: | Line 32: | ||
== Share via ethernet == | == Share via ethernet == | ||
=== | === Method 1: NetworkManager === | ||
In NetworkManager, you can share an existing internet connection of a wireless interface <code>wlan0</code> to clients connected on a ethernet device <code>eth0</code> by setting the connection type of the <code>eth0</code> interface to 'Shared'. This will start a dnsmasq DHCP server. You'll have to expose ports 53 and 67 in <code>networking.firewall.allowedUDPPorts</code>, and then you can connect using regular DHCP from the device connected via the cable in <code>eth0</code>. | |||
=== Method 2: manual setup === | |||
Share an existing internet connection of a wireless interface <code>wlan0</code> to clients connected on a ethernet device <code>eth0</code>. Make sure you've got TCP and UDP port <code>53</code> for the dnsmasq DHCP server opened in your [[Firewall]]. | Share an existing internet connection of a wireless interface <code>wlan0</code> to clients connected on a ethernet device <code>eth0</code>. Make sure you've got TCP and UDP port <code>53</code> for the dnsmasq DHCP server opened in your [[Firewall]]. | ||
Line 65: | Line 64: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === Method 3: declarative setup === | ||
Persistently share an existing internet connection on interface | Persistently share an existing internet connection on interface <code>wlan0</code> to clients connected on an ethernet interface <code>eth0</code>. Tested where <code>wlan0</code> is a wireless interface, but it should work with a different ethernet interface as well. You do not need to manually open port 53. | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
Line 119: | Line 118: | ||
}; | }; | ||
}; | }; | ||
</syntaxhighlight> | |||
For nftables, the equivalent of the iptables rules in <code>networking.firewall.extraCommands</code> above is the following. | |||
<syntaxhighlight lang="nix"> | |||
networking.nftables.ruleset = '' | |||
table ip nat { | |||
chain POSTROUTING { | |||
type nat hook postrouting priority 100; | |||
oifname "wlp2s0" counter masquerade | |||
} | |||
} | |||
table ip filter { | |||
chain INPUT { | |||
iifname "enp3s0" counter accept | |||
} | |||
} | |||
''; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:Networking]] | [[Category:Networking]] | ||
[[Category:Tutorial]] |