mdnsproxy literally means the program operates as DNS proxy server. It converts communication data (DNS protocol message) between the client and the actual DNS server.
When a DNS request that contains a locally-encoded multilingual domain name is received from the client, mdnsproxy converts the domain name in the DNS message to the name in standard encoding so that it can be handled by a DNS server with multilingual domain name support, then sends it to the DNS server. At the same time encoding conversion is performed, normalization is performed as well. On the other side, when the response message is received from the DNS server, mdnsproxy converts the multilingual domain name in the message to the name in local encoding so that the client can recognize it, then sends it to the client.
With this mechanism, mdnsproxy allows general clients to handle multilingual domain names.
Specifically, the following can be performed.
In addition, since mdnsproxy ignores the setting of the environment variable MDN_DISABLE explicitly ,in spite of whether the environment variable MDN_DISABLE is set or not, the conversion of the domain names is performed.
To use mdnsproxy, it is necessary to set the encoding and normalization scheme to be used in the special configuration file. For information on how to set this file, see mDNS Proxy Server Configuration.
To use mdnsproxy, settings must be set beforehand. Refer to mDNS Proxy Server Configuration.
mdnsproxy accepts the following command line options.
-daemon
-config
config-file
/usr/local/etc/mdnsproxy.conf
)is used.
-logfile
log-file
/usr/local/var/mdnsproxy/mdnsproxy.log
).
mdnsproxy allows general clients that do not have encoding conversion and normalization functions to handle multilingual domain names. Clients become able to use as is locally-encoded multilingual domain names.
To do so, however, the client must perform checking and conversion of domain names in its own way. This point is a problem. Some clients seriously check syntax of domain names and some create partial multilingual domain names using unique proprietary techniques. With such clients, multidomain names cannot be used even though mdnsproxy is used.
In the case of UNIX, a request to DNS is usually sent via the resolver library and the existing resolver checks the syntax of domain names. If non-ASCII code is found in the domain names, the domain names are kicked out as errors. To cope with this problem, mDNit has a patch that makes the resolver library attached to BIND 8 8-bit transparent. If the resolver library to which this patch is added is used, multilingual domain names in the local code are passed to mdnsproxy from the client. In this way, it becomes possible to use them in combination with the multilingual DNS server. With regard to Windows, this problem does not exist because the resolver (WINSOCK) is 8-bit transparent.
Remaining problems are checked and conversion is performed by the application. Since there are many subject clients and also if the source is not opened, there is no way to cope with this. Therefore, mDNkit does not have a path. However, with respect to nslookup, which is frequently used for DNS check (attached to BIND 8), and Squid, which is frequently used as a general proxy, a patch that removes domain name check is included in the kit.
For information about how the application becomes capable of handling multilingual domain names using mdnsproxy, refer to Documents.