openwrt / openwrt/packages

dnsmasq-full: proxyDHCP chainloading

Open
#28,938 16 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Makefile
Stars
4.6k
Forks
4k
Avg merge
3d 12h
Merged PRs (30d)
134

Description

Package Name

dnsmasq-full

Maintainer

@simonkelley

OpenWrt Version

OpenWrt SNAPSHOT r0-525a1e9

OpenWrt Target/Subtarget

armsr/armv8

Steps to Reproduce

I successfully configured dnsmasq-full ver. 2.90-r4 on OpenWrt to operate in proxyDHCP mode.
Since I was using the chainloading with iPXE my config was as follow:

  • dnsmasq.conf file

Enable proxyDHCP

dhcp-range=set:lan,192.168.1.0,proxy,255.255.255.0

match ipxe, which can help chainload

dhcp-match=set:ipxe,175

bios

pxe-service=tag:!ipxe,x86PC,"Network Boot BIOS",undionly.kpxe,192.168.1.3

uefi

pxe-service=tag:!ipxe,X86-64_EFI,"Network Boot UEFI x86_64",ipxe.efi,192.168.1.3

iPXE script

pxe-service=tag:ipxe,X86PC,"iPXE BIOS script",boot_script.ipxe,192.168.1.3
pxe-service=tag:ipxe,X86-64_EFI,"iPXE UEFI script",boot_script.ipxe,192.168.1.3

  • /etc/config/dhcp file

config dnsmasq
...
option logdhcp '1'
option enable_tftp '1'
option tftp_root '/tftp_dir'

config match
option networkid 'ipxe'
option match '175'

I recently updated my proxyDHCP/iPXE machine to the latest version of OpenWrt (with the "apk" package manager, instead "opkg").
This release contains dnsmasq-full ver. 2.92-r1.
I used the same config I had in my previous OpenWrt.
Apparently, the chainloading does not work on dnsmasq-full v. 2.92-r1 as it used to work.
The first stage in the chainload works OK, so undionly.kpxe is provisioned and runs on the dedicated notebook but then boot_script.ipxe is not delivered at all since
dnsmasq hangs up. It does not even replay to DHCP Discover sent by iPXE. CPU usage for {dnsmasq /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf.cfg01411c -k -x /var/run/dnsmasq/dnsmasq.cfg01411c.pid} process is about 24-26% on my 4x core ARMv8 architecture machine. It looks like one ARM in dead.
Then, it does not work at all till I restart dnsmasq.
I confirmed this issue more then 10 times. I also sniffed DHCP and TFTP to investigate the stage it hangs up.

Actual Behaviour

The first stage in the chainload works OK, so undionly.kpxe is provisioned and runs on the dedicated notebook but then boot_script.ipxe is not delivered at all since
dnsmasq hangs up. It does not even replay to DHCP Discover sent by iPXE. CPU usage for {dnsmasq /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf.cfg01411c -k -x /var/run/dnsmasq/dnsmasq.cfg01411c.pid} process is about 24-26% on my 4x core ARMv8 architecture machine. It looks like one ARM in dead.
Then, it does not work at all till I restart dnsmasq.
I confirmed this issue more then 10 times. I also sniffed DHCP and TFTP to investigate the stage it hangs up.

Confirmation Checklist

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the reported dnsmasq.conf and /etc/config/dhcp settings, then inspect the generated /var/etc/dnsmasq.conf.cfg01411c while reproducing the iPXE chainload on dnsmasq-full 2.92-r1. Compare DHCP and TFTP behavior before and after the first undionly.kpxe stage; done means dnsmasq continues answering iPXE requests and delivers boot_script.ipxe without hanging.

Written by the indexing model from the issue text.

Assessment

Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.