Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
| docs:guide-user:base-system:dhcp.dnsmasq [2019/04/12 10:35] – [Multiple DHCP-ranges] description vgaetera | docs:guide-user:base-system:dhcp.dnsmasq [2019/04/24 11:18] – Correct link to excito wiki jaimet | ||
|---|---|---|---|
| Line 65: | Line 65: | ||
| </ | </ | ||
| + | ===== Troubleshooting ===== | ||
| + | ==== DHCP response missing due to network overload ==== | ||
| + | Sometimes when an interface is on the edge of the capacity (especially WiFi over longer distances) a DHCP request could be not replied in time. | ||
| + | Therefore the DHCP client will not be able to receive proper network settings. | ||
| + | A possible workaround is using static IPs or very long DHCP leases (more than 12h). | ||
| + | This is particularly important when one has several WiFi repeaters that use DHCP and are distant from each other or not easily accessible. | ||
| - | ===== Examples ===== | ||
| - | ==== Add a secondary DNS-server ==== | ||
| - | If you already have a DNS-server (secondary DNS-server), | ||
| - | |||
| - | On your primary DNS-server replace ISP DNS-servers with your secondary server. | ||
| - | |||
| - | <code bash> | ||
| - | uci set network.wan.peerdns=" | ||
| - | uci set network.wan.dns=" | ||
| - | uci set network.wan6.peerdns=" | ||
| - | uci delete network.wan6.dns | ||
| - | uci commit network | ||
| - | service network reload | ||
| - | </ | ||
| - | |||
| - | On your secondary DNS-server replace DHCP-provided servers with ISP DNS-servers or a [[wp> | ||
| - | |||
| - | <code bash> | ||
| - | uci set network.wan.peerdns=" | ||
| - | uci set network.wan.dns=" | ||
| - | uci set network.wan6.peerdns=" | ||
| - | uci set network.wan6.dns=" | ||
| - | uci commit network | ||
| - | service network reload | ||
| - | </ | ||
| - | |||
| - | ==== Forward DNS-queries to a public DNS-provider ==== | ||
| - | Select a [[wp> | ||
| - | |||
| - | <code bash> | ||
| - | uci -q delete dhcp.@dnsmasq[0].server | ||
| - | uci add_list dhcp.@dnsmasq[0].server=" | ||
| - | uci add_list dhcp.@dnsmasq[0].server=" | ||
| - | uci commit dhcp | ||
| - | service dnsmasq restart | ||
| - | </ | ||
| - | |||
| - | ==== Multiple DHCP-ranges ==== | ||
| - | Adding another DHCP-range assuming you have already configured network interface '' | ||
| - | |||
| - | <code bash> | ||
| - | uci set dhcp.wlan=" | ||
| - | uci set dhcp.wlan.interface=" | ||
| - | uci set dhcp.wlan.start=" | ||
| - | uci set dhcp.wlan.limit=" | ||
| - | uci set dhcp.wlan.leasetime=" | ||
| - | uci commit dhcp | ||
| - | service dnsmasq restart | ||
| - | </ | ||
| - | |||
| - | ==== MAC-filter for DHCP ==== | ||
| - | There are situations where you want Dnsmasq to generate DHCP addresses for only known clients. | ||
| - | |||
| - | <code bash> | ||
| - | cat << " | ||
| - | *: | ||
| - | XX: | ||
| - | EOF | ||
| - | |||
| - | uci set dhcp.@dnsmasq[0].hostsfile="/ | ||
| - | uci commit dhcp | ||
| - | service dnsmasq restart | ||
| - | </ | ||
| - | |||
| - | ==== DNS-filtering ==== | ||
| - | * [[https:// | ||
| - | |||
| - | ===== Troubleshooting ===== | ||
| ==== Log spammed with DHCPINFORM/ | ==== Log spammed with DHCPINFORM/ | ||
| Windows 7 among others ask for proxy settings using DHCP. | Windows 7 among others ask for proxy settings using DHCP. | ||
| The issue is that they do not stop asking until they have received an answer. | The issue is that they do not stop asking until they have received an answer. | ||
| - | This results in that the log contains a lot information about these requests, an example can be found below (thanks | + | This results in that the log contains a lot information about these requests, an example can be found below (thanks |
| - | + | ||
| - | <code bash> | + | |
| - | Jul 1 06:34:09 MorganB3 dnsmasq-dhcp[1638]: | + | |
| - | Jul 1 06:34:09 MorganB3 dnsmasq-dhcp[1638]: | + | |
| - | </ | + | |
| Solution: | Solution: | ||
| Line 152: | Line 85: | ||
| </ | </ | ||
| - | ==== Assigning Dnsmasq queryport | + | ==== Static lease issues |
| - | The queryport is the outgoing port Dnsmasq uses to query other servers, and is integral to Dnsmasq successfully assigning DNS-values to the DHCP-clients. | + | Windows 7 has introduced |
| - | The default settings create arbitrary high port number connections on a range of ports. | + | |
| - | You can constrain those connections to a specific port. | + | |
| - | + | ||
| - | <code bash> | + | |
| - | uci set dhcp.@dnsmasq[0].queryport=" | + | |
| - | uci commit dhcp | + | |
| - | service dnsmasq restart | + | |
| - | </ | + | |
| - | + | ||
| - | Be certain that your firewall allows outbound connections from the router on the query port that you assign. | + | |
| - | As a caution, Dnsmasq runs as user '' | + | |
| - | Using the standard DNS-port 53 for these queries will fail. | + | |
| - | The failure can be found in the logs. | + | |
| - | + | ||
| - | <code bash> | + | |
| - | # logread -e dnsmasq.*ignoring.*nameserver | + | |
| - | Jan 01 01:01:01 MyRoutersName daemon.warn dnsmasq[3490]: ignoring nameserver 8.8.8.8 - cannot make/bind socket: Permission denied | + | |
| - | </code> | + | |
| - | + | ||
| - | Do not assign query ports less than 1024 to the queryport. | + | |
| - | + | ||
| - | ==== Losing connection due to missing | + | |
| - | Sometimes when an interface is on the edge of the capacity (especially wifi over longer distances) a dhcp request could be not replied in time and therefore the dhcp client will not be | + | |
| - | able to receive proper network settings. | + | |
| - | A possible workaround is using static | + | |
| - | IPs or very long dhcp leases (more than 12h). | + | |
| - | This is particularly important | + | |
| - | when one has several wifi repeaters that use dhcp and are distant from each other or not easily | + | |
| - | accessible. | + | |
| - | + | ||
| - | ==== Windows-related issues ==== | + | |
| - | :!: **Windows 7** has introduced a new // | + | |
| It won't assign IP address obtained from a DHCP server to an interface, if the IP was used before for another interface, even if that other interface is **NOT** active currently (i.e. cable disconnected). | It won't assign IP address obtained from a DHCP server to an interface, if the IP was used before for another interface, even if that other interface is **NOT** active currently (i.e. cable disconnected). | ||
| This behaviour is unique and was not reported for older Windows versions, Mac OS nor Linux. | This behaviour is unique and was not reported for older Windows versions, Mac OS nor Linux. | ||
| Line 192: | Line 93: | ||
| Solution: | Solution: | ||
| - | - Create a bridge from the wireless and ethernet interfaces on your client | + | - Create a [[google> |
| - | * it's trivial: | + | * Add the MAC address of the bridge to ''/ |
| - | * you will have to add the MAC address of the bridge to ''/ | + | * Since the bridge will probably take and alter your ethernet MAC address, you will lose SLAAC on wifi interface, making your laptop IPv6-disabled when only wireless is up. |
| + | - Another solution is IPv6 friendly, you don't need to create a bridge, nor add MAC address to dnsmasq config file, but it involves user interaction: | ||
| + | * When you plug the ethernet cable in, disable wireless interface in control panel (power off wireless won't do it). | ||
| + | * When you unplug ethernet cable, enable wireless and disable ethernet. | ||
| <code bash> | <code bash> | ||
| Line 204: | Line 108: | ||
| service dnsmasq restart | service dnsmasq restart | ||
| </ | </ | ||
| - | |||
| - | * Since the bridge will probably take and alter your ethernet MAC address, you will lose SLAAC on wifi interface, making your laptop IPv6-disabled when only wireless is up. | ||
| - | - Another solution is IPv6 friendly, you don't need to create a bridge, nor add MAC address to dnsmasq config file, but it involves user interaction: | ||
| - | * When you plug the ethernet cable in, disable wireless interface in control panel (power off wireless won't do it). | ||
| - | * When you unplug ethernet cable, enable wireless and disable ethernet. | ||
| - | |||
| - | Notes: | ||
| - | * http:// | ||
| - | * //force// is a bool option that will force dhcp-option to always be sent, even if the client does not ask for it in the parameter request list. This is sometimes needed, for example when sending options to PXELinux. | ||
| ===== Notes ===== | ===== Notes ===== | ||