openwrt / odhcpd

This repository is a mirror of https://git.openwrt.org/?p=project/odhcpd.git. Pull requests will be accepted which will be merged in odhcpd.git
GNU General Public License v2.0
160 stars 96 forks source link

DHCP Ack to broadcast? #128

Closed damnms closed 5 years ago

damnms commented 5 years ago

I am just figthing to get my mobile phone back online, so i was wondering why an ACK is sent to a broadcast address? I am not sure if this is a failure or some RFC implementation i am not aware of. https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol#DHCP_acknowledgement "The acknowledgement phase involves sending a DHCPACK packet to the client"

Sun Apr 14 15:53:26 2019 daemon.notice odhcpd[1642]: Got DHCPv4 request
Sun Apr 14 15:53:26 2019 daemon.warn odhcpd[1642]: received DHCPV4_MSG_INFORM from d0:50:99:81:35:1f
Sun Apr 14 15:53:26 2019 daemon.err odhcpd[1642]: Sent DHCPV4_MSG_ACK to ff:ff:ff:ff:ff:ff - 255.255.255.255

See also https://github.com/openwrt/odhcpd/issues/127

damnms commented 5 years ago

My mobile phone was running Lineageos (LOS) 16. I was unable to connect. Also with LOS 15.1. So i went back to 14 - now it works again. Seems like there is some kind of incompatibility with LOS 15.1 and above.

damnms commented 5 years ago

Correction: now i have the same problem with LOS 14. It seems to be some kind of incompatibility with the dhcp leases. I guess. And i just noticed that the mac address above is not from my phone. It is from my pc. My bad. So no logs at all - which is even worse.

dedeckeh commented 5 years ago

Are you capable of taking a tcpdump on the gateway of a working and a non-working case ?

damnms commented 5 years ago

can you tell me how i can install tcpdump without recompiling openwrt?

root@OpenWrt:~# opkg update
Downloading http://downloads.openwrt.org/releases/18.06.2/targets/mvebu/cortexa9/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_core
Downloading http://downloads.openwrt.org/releases/18.06.2/targets/mvebu/cortexa9/packages/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/base/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_base
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/base/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_luci
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/luci/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_packages
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/packages/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_routing
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/routing/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_telephony
Downloading http://downloads.openwrt.org/releases/18.06.2/packages/arm_cortex-a9_vfpv3/telephony/Packages.sig
Signature check passed.
root@OpenWrt:~# opkg search tcpdump
root@OpenWrt:~#
damnms commented 5 years ago

thats so wierd... opkg search tcpdump did not find anything, but opkg install tcpdump worked. I will try to get that dump

damnms commented 5 years ago
root@OpenWrt:~# tcpdump -vv -i wlan0 -n port 67 and port 68
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:24:02.862924 IP (tos 0x10, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 318)
    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 00:04:4b:56:ec:15, length 290, xid 0xf1ceb725, Flags [none] (0x0000)
          Client-Ethernet-Address 00:04:4b:56:ec:15
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Client-ID Option 61, length 7: ether 00:04:4b:56:ec:15
            MSZ Option 57, length 2: 1500
            Vendor-Class Option 60, length 18: "android-dhcp-8.1.0"
            Parameter-Request Option 55, length 10:
              Subnet-Mask, Default-Gateway, Domain-Name-Server, Domain-Name
              MTU, BR, Lease-Time, RN
              RB, Vendor-Option
21:24:02.862947 IP (tos 0x10, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 318)
    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 00:04:4b:56:ec:15, length 290, xid 0xf1ceb725, Flags [none] (0x0000)
          Client-Ethernet-Address 00:04:4b:56:ec:15
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Client-ID Option 61, length 7: ether 00:04:4b:56:ec:15
            MSZ Option 57, length 2: 1500
            Vendor-Class Option 60, length 18: "android-dhcp-8.1.0"
            Parameter-Request Option 55, length 10:
              Subnet-Mask, Default-Gateway, Domain-Name-Server, Domain-Name
              MTU, BR, Lease-Time, RN
              RB, Vendor-Option
21:24:02.863429 IP (tos 0xc0, ttl 64, id 50215, offset 0, flags [none], proto UDP (17), length 576)
    192.168.7.1.67 > 192.168.7.161.68: [bad udp cksum 0x9230 -> 0xa302!] BOOTP/DHCP, Reply, length 548, xid 0xf1ceb725, Flags [none] (0x0000)
          Your-IP 192.168.7.161
          Server-IP 192.168.7.1
          Client-Ethernet-Address 00:04:4b:56:ec:15
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Offer
            Server-ID Option 54, length 4: 192.168.7.1
            Lease-Time Option 51, length 4: 43200
            RN Option 58, length 4: 21600
            RB Option 59, length 4: 37800
            Subnet-Mask Option 1, length 4: 255.255.255.0
            Hostname Option 12, length 24: "android-57bd83f0adf75b4e"
            BR Option 28, length 4: 192.168.7.255
            MTU Option 26, length 2: 1500
            Default-Gateway Option 3, length 4: 192.168.7.1
            Domain-Name-Server Option 6, length 4: 192.168.1.1
21:24:02.872771 IP (tos 0x10, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 330)
    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 00:04:4b:56:ec:15, length 302, xid 0xf1ceb725, Flags [none] (0x0000)
          Client-Ethernet-Address 00:04:4b:56:ec:15
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Request
            Client-ID Option 61, length 7: ether 00:04:4b:56:ec:15
            Requested-IP Option 50, length 4: 192.168.7.161
            Server-ID Option 54, length 4: 192.168.7.1
            MSZ Option 57, length 2: 1500
            Vendor-Class Option 60, length 18: "android-dhcp-8.1.0"
            Parameter-Request Option 55, length 10:
              Subnet-Mask, Default-Gateway, Domain-Name-Server, Domain-Name
              MTU, BR, Lease-Time, RN
              RB, Vendor-Option
21:24:02.872813 IP (tos 0x10, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 330)
    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 00:04:4b:56:ec:15, length 302, xid 0xf1ceb725, Flags [none] (0x0000)
          Client-Ethernet-Address 00:04:4b:56:ec:15
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Request
            Client-ID Option 61, length 7: ether 00:04:4b:56:ec:15
            Requested-IP Option 50, length 4: 192.168.7.161
            Server-ID Option 54, length 4: 192.168.7.1
            MSZ Option 57, length 2: 1500
            Vendor-Class Option 60, length 18: "android-dhcp-8.1.0"
            Parameter-Request Option 55, length 10:
              Subnet-Mask, Default-Gateway, Domain-Name-Server, Domain-Name
              MTU, BR, Lease-Time, RN
              RB, Vendor-Option
21:24:02.873259 IP (tos 0xc0, ttl 64, id 50216, offset 0, flags [none], proto UDP (17), length 576)
    192.168.7.1.67 > 192.168.7.161.68: [bad udp cksum 0x9230 -> 0xa002!] BOOTP/DHCP, Reply, length 548, xid 0xf1ceb725, Flags [none] (0x0000)
          Your-IP 192.168.7.161
          Server-IP 192.168.7.1
          Client-Ethernet-Address 00:04:4b:56:ec:15
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: ACK
            Server-ID Option 54, length 4: 192.168.7.1
            Lease-Time Option 51, length 4: 43200
            RN Option 58, length 4: 21600
            RB Option 59, length 4: 37800
            Subnet-Mask Option 1, length 4: 255.255.255.0
            Hostname Option 12, length 24: "android-57bd83f0adf75b4e"
            BR Option 28, length 4: 192.168.7.255
            MTU Option 26, length 2: 1500
            Default-Gateway Option 3, length 4: 192.168.7.1
            Domain-Name-Server Option 6, length 4: 192.168.1.1
^C
6 packets captured
6 packets received by filter
0 packets dropped by kernel

this is now from the tablet. whats pretty confusing right now: when i run the same command and try to get a new ip on my android, there is not output at all. guess i will have to further investigate - seems like this is not a dhcp problem, more a firewall or even connectivity problem from my mobile phone.

damnms commented 5 years ago

very strange... really... i switched from 5ghz to 2.4ghz mode (ac->n), now it works again. So can be closed, is not a problem of odhcpd. However, i am wondering what the heck is going on...