mDNkit Specifications
- Overall Structure
- mdnsproxy
- mdnconv
- BIND 9 patch
- runmdn
- mDN Wrapper
- MDN library
- mDNkit Configuration File
Overall Structure
Kit Components
The mDNkit is comprised of the following components.
MDN library
This libary implements basic processing related to multilingual domain name conversion. The following features are provided.
- Encoding conversion庁。
- NAMEPREP
- Local mapping
- Analysis and assembly of DNS message
All of the following components are created using this library.
Also, an API is provided to allow applications that use these functions to convert multilingual domain names. This follows IDNA, which a proposal for the multilingual domain name processing architecture. In this architecture, the client application itself executes NAMEPREP and converts encoding to the IDN encoding, then calls the resolver.
mdnsproxy
Operating as a proxy server for the DNS server, this command relays DNS messages from the client to the DNS server and relays DNS messages returned from the DNS server to the client.
When DNS messages sent from the client are relayed, the domain name in the message is converted from the local encoding used by the client to the DNS protocol encoding (IDN encoding) used by the multilingualized DNS server and NAMEPREP is also performed.
In addition, when a DNS message returned from the DNS server is relayed, the domain name in the message is converted from the IDN encoding to the local encoding.
mdnconv
This is an encoding conversion tool for zone master files and named.conf
file. These locally-encoded files are converted to the IDN encoding used by the multilingualized DNS server, and NAMEPREP is performed at the same time.
BIND 9 patch
This patch adds to BIND 9 the ability to support multilingual domain names. This patch adds encoding conversion of multilingual domain names and NAMEPREP functions to tools such as dig and nslookup. Because of this, multilingual domain names are supported.
runmdn
This command allows UNIX applications to support of multilingual domain names without re-compiling. By dynamically linking the MDN library when the application is executed, encoding conversion of multilingual domain names and normalization functions (NAMEPREP) are added to the resolver linked to the application. Because of this, multilingual domain names can be handled without using mdnsproxy.
mDN Wrapper
This is a Wrapper DLL for WINSOCK that allows Windows-based applications to support multilingual domain names. Usually, Windows applications resolve domain names with WINSOCK. mDN Wrapper intercepts the WINSOCK call and performs encoding conversion and NAMEPREP of multilingual domain names. The same thing can be done with dnsproxy; however, when mDN Wrapper is used different local encoding used by applications can be accepted.
8-bit through patch
When dnsproxy is used to convert multilingual domain name encoding or perform normalization, these functions are not required in the DNS server or resolver library. However, when 8-bit code such as UTF-8 is used for DNS protocol encoding, the conventional DNS server cannot be used and modification must be performed so that 8-bit code can be passed without error.
When the local encoding uses 8-bit code such as SJIS, the resolver library also must be modified so that 8-bit code can be passed without error. Furthermore, some applications check domain names themselves and do not pass 8-bit code.
Furthermore, some applications check domain names themselves and do not pass 8-bit code.
For these reasons, this kit provides the following patches:
- Patch that makes the BIND 8 name server and resolver 8-bit through
- Patch that makes the URL analysis part of Squid庁。8-bit through (Squid is a Web cache server)
The specifications of these 8-bit through patches are not discussed here.
Component Diagram
The following two diagrams illustrate how and where each component is used.
The first diagram depicts multilingual domain name processing by the client application using the API for name resolution or the client side resolver without using mdnsproxy.
The second diagram depicts multilingual domain name processing using mdnsproxy.
In the diagrams, the italicized parts are compoments included in the kit.
Local encoding such as SJIS is used in the upper half of the diagram, and IDN encoding used by multilingualized DNS such as Punycode is used in the lower half of the diagram. The components provided by this kit serve as a bridge between these two worlds.