To answer the question asked:
NAT is a layer 3 networking effect - it happens when packets are routed, whereas MAC addresses are a layer 2 network aspect - they are only meaningful on the local network. So to answer your question, you cannot NAT to a MAC address - the notion of NAT cannot work across layers.
To answer the actual question (how can I use DHCP and ensure NAT still works):
You just need to reserve your IP address in DHCP so that it doesn't change over time. This is bound to the MAC address of your machine. So and tells the DHCP server that if a request for an IP address comes from a specific MAC address, it should be assigned a specific IP address.
The message:
There is a "Double NAT" in the network. This AirPort base station has a private IP address on its Ethernet WAN port. It is connected to a device or network that is using Network Address Translation to provide private IP addresses.
is purely a warning message, which you can safely disregard altogether.
The annoying feature of this configuration is that none of the devices on the 192.168.0.0/24 network will be able to talk to those on the 192.168.1.0/24 network. In other words, right now they represent two distinct subnets. You may keep this configuration, if this is of no concern to you.
Alternatively, you may wish to integrate all of your components into a single subnet. You may obtain this in this way (the order of these operations matters):
1.connect to the Airport, and disable DHCP;
2.unplug the ethernet cable from the WAN side of the Airport, and plug it into the LAN side.
3.open the GUI of the main router, and change the mask of the LAN, from 255.255.255.0 to 255.255.254.0.
4.Turn off everything;
5.turn on the router, count to five, turn on all of the devices in whichever order.
By doing this, you will have established a twice-as-large network, with these properties (output of ipcalc):
# ipcalc 192.168.0.0/23
Address: 192.168.0.0 11000000.10101000.0000000 0.00000000
Netmask: 255.255.254.0 = 23 11111111.11111111.1111111 0.00000000
Wildcard: 0.0.1.255 00000000.00000000.0000000 1.11111111
Network: 192.168.0.0/23 11000000.10101000.0000000 0.00000000
HostMin: 192.168.0.1 11000000.10101000.0000000 0.00000001
HostMax: 192.168.1.254 11000000.10101000.0000000 1.11111110
Broadcast: 192.168.1.255 11000000.10101000.0000000 1.11111111
Hosts/Net: 510 Class C, Private Internet
This way you will have defeated the dearth of IP addresses, while still keeping all of your devices into the same subnet. Turning everything off and on again forces the introduction of the new mask, and the new routing table.
This works provided you do not have static IPs. If instead you do, you will have to manually adjust the mask to reflect its new value, on each device.
Best Answer
NAT is a way to translate traffic in several ways. The simplest in home routers is to make everything seem like they’re behind the same IP address. This means any outbound connection from the local network is taken in, its source address is set to the router’s public address, a new port is allocated and the modified packet is sent forward. When there’s a packet back the same thing is done in reverse and the packet is sent to the original device.
NAT doesn’t need to be between private and public networks. It can also be between two public networks or two private ones. It just diverts traffic and doesn’t know anything about public or private.
DHCP is completely unrelated to this. It is a way for devices to shout to the local network asking for an IP address and other related information (like the gateway address, name servers etc) to be given to them. Again, a home router usually has a server to serve the clients in the local network. Without a DHCP server you’d need to set all IP addressed by hand to each device (or use the automatic IP system in Windows, for example, but that is only for local networks, not internetworking). The devices can not communicate using IP unless they have IP addresses and since practically all communications is over IP it’s needed.
The IP address given isn’t necessarily public. Maybe this causes the confusion to you. It’s any address that’s defined in the DHCP pool, or maybe even a static one for that specific device.
So you can have DHCP allocating IP addresses and never use a NAT. It just gives IPs from the pool and that’s that. You can also have NAT without DHCP. You can set fixed IPs, or you can use NAT to divert traffic through a firewall to some other machine etc. It doesn’t need anything from DHCP.
In home networks both are useful since there’s pretty much always only one external IP and users don’t want to manually set fixed IP addresses. So DHCP gives them local private IPs and NAT translates connections so that they look like they come from the same address.