I recall there are some Kerberos related errors on the system also which might need looking into.
Were any DNS related libraries changed or just the binaries?Small update: tried mDNSResponder, mDNSResponderHelper, SystemConfiguration.framework (seems to be a dependency for mDNSResponder, handles some network related stuff) and configd, all from 10A190 which had properly working internet and the result is the exact same as we had before. self-assigned IP, connects with manually setting IPs, pages loading after adding them to /etc/hosts so I don't think any of those are responsible for the problem.
I think in my past tests, I've tried them individually and never combined so these results are new for me.
I recall there are some Kerberos related errors on the system also which might need looking into.
@ChrisCharman, I have built from source on other operating systems so I'm game to give it a try.
I found the link for AOSP in the first post of this thread but haven't found any obvious way to identify projects focused specifically on 10.6.8 on the Apple site. A helpful hint or two would be appreciated here!
In the mean time, I believe I have identified at least a very likely pair of candidates for the DNS issues. There are two binaries in /usr/sbin/ named mDNSResponder and mDNSResponderHelper which from the documentation I have found are supposed to control DNS management for the OS.
I don't yet have access to other developer release updates by the community but swapping in the corresponding binaries from 10.5.8 broke all external packet routing even with manual configuration of the network interfaces. Loopback address pinging still worked (including to manually assigned IP addresses) but all else was broken.
If we have working networking in a relatively close DP to the GM I suggest trying the next newest verified working versions of those binaries in the GM (10.6.8) image we are playing with now.
Tried some other stuff like /usr/bin/dns-sd, /usr/sbin/dnsextd, /usr/sbin/dnssec-keygen and /usr/sbin/dnssec-signzone but still nothing. I couldn't find anything else that seems related to DNS.Were any DNS related libraries changed or just the binaries?
Apple’s Open Source DNS Service Discovery Collection
This is Apple’s Open Source DNS Service Discovery Collection. The collection consists of a set of daemons, tools and libraries which can be used either together or separately when deploying and using DNS Service Discovery. The collection consists of the following subsystems:
- Daemons
- mDNS Responder Daemon
- DNSSD Discovery Proxy
- DNSSD Service Registration Protocol Advertising Proxy
- DNSSD Service Registration Protocol Client
- DNSSD Service Registration Protocol Update Proxy
- Systems:
- OpenThread Stub Network Border Router
- Tools:
- DNSSD Command-line tool
- Libraries:
- DNSSD Client Library For more information on the various parts of the collection, see the descriptions below.
mDNS Responder Daemon
The mDNS Responder Daemon (mDNSResponder) serves both as a DNS Stub Resolver, as a resolver for information published using multicast DNS (mDNS), and as a publisher of mDNS information. mDNSResponder monitors multicast traffic on port 5353, the mDNS port, to keep track of services advertised on the local network. mDNSResponder performs DNS resolution for non-local queries, and resolves queries in the special “.local” domain using mDNS. mDNSResponder is used on macOS as the system resolver as well as providing Bonjour service advertising and discovery, and can provide the same services on other platforms, such as Linux and BSD.
[Click here to learn how to set up and use mDNSResponder.][1]
OpenThread Stub Network Border Router
The OpenThread Stub Network Border Router can be used to provide stub router service for Thread (802.15.4 mesh) networks using OpenThread. A stub router is a router that serves one or more isolated (stub) networks, and can connect automatically to an infrastructure network, such as a home Wi-Fi network. The purpose of a stub router is to allow:
[Click here to learn how to set up and use an Open Thread Stub Network Border Router][2]
- devices on the stub network to discover and be discovered by devices on the infrastructure network
- devices on the stub network to be reached by devices on the infrastructure network
- devices on the infrastructure network to reach devices on the stub network What makes a stub router different than other routers is that the stub router only provides a way to reach one or more isolated networks. It will never provide a default route (for example to the Internet). It is not possible to reach a network other than the directly-connected stub network through a stub router. Stub routers need not participate in a routing protocol on the infrastructure network, and therefore do not require operator intervention in order to function.
DNSSD Discovery Proxy
The DNSSD Discovery Proxy implements the IETF DNSSD Discovery Proxy ([RFC8766][3]) and DNS Push ([RFC 8765][4]). Together, these provide authoritative DNS service, for the purpose of DNS Service Discovery, using mDNS instead of a stateful DNS database. This allows the network infrastructure to provide DNS service discovery automatically over DNS, which eliminates the common problem on multi-link networks where services can only be discovered by a host when it happens to be connected to the correct link.
[Click here to learn how to set up and use a DNSSD Discovery Proxy][5]
DNSSD Service Registration Protocol Advertising Proxy
The DNSSD Service Registration Protocol Advertising Proxy implements acts as a [DNSSD Service Registration Protocol][6] server: it accepts service registrations from SRP clients. Service registrations are then advertised on one or more infrastructure links using multicast DNS.
[Click here to learn how to set up and use a DNSSD Service Registration Protocol Advertising Proxy][7]
DNSSD Service Registration Protocol Client
The DNSSD Service Registration Protocol Client implements the client side of the [DNSSD Service Registration Protocol][8]. The core client implementation is implemented in such a way that it can be readily embedded using a small API that must be implemented in the embedded environment. Two example APIs are provided, one for Thread, and another for Posix. The Posix implementation builds a command-line client that can either be used as a daemon to register a service, or used to validate various aspects of Service Registration Protocol implementations.
[Click here for more information about the DNSSD Service Registration Protocol Client][9]
DNSSD Service Registration Protocol Update Proxy
The DNSSD Service Registration Protocol Update Proxy acts as a [DNSSD Service Registration Protocol][10] server: it accepts service registrations from SRP clients. The SRP registration is then used to generate a series of DNS Updates ([RFC2136][11]). These updates can be authenticated using TSIG. The SRP server responds to the client after all of the DNS Updates have completed, or responds when one part of the DNS update fails. The effect of running the SRP Protocol Update Proxy is as if the DNS server being updated were itself an SRP server.
[Click here to learn how to set up and use a DNSSD Service Registration Protocol Update Proxy][12]
DNSSD command-line tool
The DNSSD command line tool (dns-sd) provides a way to exercise the services provided by mDNSResponder. Services can be advertised, browsed, and resolved. The tool provides a wide variety of different command-line options and is a great way to explore the functionality of DNS-SD.
[Click here to learn about the DNSSD command-line tool][13]
DNSSD Client Library
The DNSSD Client Library provides, when used with the mDNS Responder daemon, a fully-featured DNS stub name resolution service, DNSSD advertising service, and DNSSD browsing and resolution service. The library is asynchronous, and can be easily integrated into an existing asynchronous server flow.
Tried some other stuff like /usr/bin/dns-sd, /usr/sbin/dnsextd, /usr/sbin/dnssec-keygen and /usr/sbin/dnssec-signzone but still nothing. I couldn't find anything else that seems related to DNS.
Possibly the bonjour related projectsDo we know what components are responsible for UDP?
In the XNU source I see some TCP/UDP stuff in the bsd/netinet folder so maybe it could be the kernel?Do we know what components are responsible for UDP?
:$ nc -vnzu 172.217.4.206 80
Connection to 172.217.4.206 80 port [udp/*] succeeded!
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
@educovas I managed to find a spare hour the other day to compile some of the binaries from the AOSP mDNSResponder project 10.6.8 tree then replaced the binaries on the system. Didn’t break the build so they work as expected, but also didn’t fix the problem. I haven’t yet replaced the main mDNDResponder binary @FBSD_Mac as there are two dependencies that need to be built first (or at least project headers needed). One of those projects is libdispatch @barracuda156.
Perfect thanks @barracuda156! Will try building manually so headers get put in the correct places etc when i get a chance.For libdispatch you could perhaps just build it via MacPorts (as I mentioned above, it does not introduce any dependencies or even use MacPorts tools). You can check what gets installed here: https://ports.macports.org/port/libdispatch-legacy/details
Since it is only headers and static libs, those can be moved wherever needed.
Alternatively, the same build can be done manually without MacPorts being installed. Perhaps portfile recipe is pretty transparent. Only Xcode Unix tools are used.
A note re patches:
1. I think pthread_threadid_np-expose-on-PowerPC.diff is unneeded until Libc gets rebuilt to make pthread_threadid_np available there. Just drop it from the portfile. It is not required to make the build work.
2. Other patches were added to address build issues on 10a190. They may or may not be needed on 10.6.8. (I.e. it works on 10.6.8 with all those patches, but some may not be required.)
I've tried to see which build between 10A222 and GM was the first to show the network problems but unfortunately I couldn't get 10A261 and 10A286 to boot because none of the available DirectoryService binaries work (10A222 and GM). The best I got was build 10A314 with the kernel from 10A354 (10.0.0d8). 10.0.0.d4 to 10.0.0d6 won't boot on PowerPC, even after patching.
Unfortunately this didn't help, the problem also happens with this combination.
Perfect thanks @barracuda156! Will try building manually so headers get put in the correct places etc when i get a chance.
Thank you for continuing to look for a working configuration, @educovas!
I've been working my way through some possibilities at the command line level and found at least one thing that prevents proper functionality after comparing to the working Intel 10.6.8 install on my MacBook Pro.
/var/run/mDNSResponder is a broken symlink to /var/run/mdns/mDNSResponder
Excellent. Lots of system components depend on libdispatch so fixing the system version would be extremely desirableAs I recall, it took more time to write portfile logic than to make the build itself work. Should be unproblematic.
Probably needs libresolv to be rebuilt. I imagine (and have started) rebuilding and replacing all network related AOSP projects will be beneficial.At least in the earlier image this symlink was also broken (may not apply to the current one):
View attachment 2435448
I'm sure the DirectoryService problem would be fixed if I could compile the correct version from AOSP like I did for GM. The kernel I bet was also affecting Rosetta and the problem was fixed intentionally.Interesting how something got broken in intermediate builds but fixed (whether on purpose or by accident) in later ones.
ideally we need to build all AOSP projects to restore all binaries available that are currently from 10A190. I just never did that because I'm terrible at compiling software.Excellent. Lots of system components depend on libdispatch so fixing the system version would be extremely desirable
Probably needs libresolv to be rebuilt. I imagine (and have started) rebuilding and replacing all network related AOSP projects will be beneficial.
Probably needs libresolv to be rebuilt. I imagine (and have started) rebuilding and replacing all network related AOSP projects will be beneficial.
Yeah rebuilding the AOSP sources is basically what i’ve been doing for the last few years, albeit slowly and intermittently due to time constraints. I was also mainly focused on 10A190 so can now shift to 10.6.8 as there is a bootable image to work from. Initial testing has shown that cross-compiled binaries built on intel 10.6.8 work on the modified ppc version so that bodes well for speed of compilation. I still won’t have additional time but at least what i build can be shared with others running the same system down the line as opposed to a few of us running multiple different systems with varying degrees of hybrid slicingI'm sure the DirectoryService problem would be fixed if I could compile the correct version from AOSP like I did for GM. The kernel I bet was also affecting Rosetta and the problem was fixed intentionally.
ideally we need to build all AOSP projects to restore all binaries available that are currently from 10A190. I just never did that because I'm terrible at compiling software.
Yes, cross compiling works perfectly, I've built everything I needed on my MacBookPro8,2 running 10.6.8. I should probably start building the AOSP projects since I have no idea of what else I could do to fix bugs.Yeah rebuilding the AOSP sources is basically what i’ve been doing for the last few years, albeit slowly and intermittently due to time constraints. I was also mainly focused on 10A190 so can now shift to 10.6.8 as there is a bootable image to work from. Initial testing has shown that cross-compiled binaries built on intel 10.6.8 work on the modified ppc version so that bodes well for speed of compilation. I still won’t have additional time but at least what i build can be shared with others running the same system down the line as opposed to a few of us running multiple different systems with varying degrees of hybrid slicing