Имитация прохождения NAT на виртуальной коробке
Я установил виртуальный ящик (с двумя виртуальными адаптерами (тип NAT)) - Host (Ubuntu -10.10) - Guest-Opensuse-11.4. Моя цель состоит в том, чтобы моделировать все четыре типа NAT, как определено здесь. Моделирование различных типов NAT может быть сделано с использованием Linux iptables
, В этих примерах eth0 является частной сетью, а eth1 является публичной сетью.
Полный конус:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source <public ip goes here>
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination <private ip goes here>
Ограниченный конус:
iptables -t nat POSTROUTING -o eth1 -p tcp -j SNAT --to-source <public ip goes here>
iptables -t nat POSTROUTING -o eth1 -p udp -j SNAT --to-source <public ip goes here>
iptables -t nat PREROUTING -i eth1 -p tcp -j DNAT --to-destination <private ip goes here>
iptables -t nat PREROUTING -i eth1 -p udp -j DNAT --to-destination <private ip goes here>
iptables -A INPUT -i eth1 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m state --state NEW -j DROP
iptables -A INPUT -i eth1 -p udp -m state --state NEW -j DROP
Ограниченный портом конус:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source <public ip goes here>
Symmentric:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables --flush
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE --random
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Я установил гостя OpenSuse с двумя виртуальными адаптерами, eth0 и eth1.
- eth1 с адресом 10.0.3.15 / eth1:1 как 10.0.3.16
- eth0 с адресом 10.0.2.15
Затем запустил каскад клиент / сервер...
Сервер:
eKimchi@linux-6j9k:~/sw/stun/stund> ./server -v -h 10.0.3.15 -a 10.0.3.16
Клиент:
eKimchi@linux-6j9k:~/sw/stun/stund> ./client -v 10.0.3.15 -i 10.0.2.15
... во всех четырех случаях дает одинаковые результаты:
тест I = 1 тест II = 1 тест III = 1 тест I(2) = 1 является естественным = 0 сопоставленных IP-адресов одинаковы = 1 шпилька = 1 порт сохранения = 1 Основной: открытый Возвращаемое значение 0x000001
Q-1: Пожалуйста, дайте мне знать, если кто-нибудь когда-либо делал, он должен вести себя как NAT согласно описанию, но нигде не работает как NAT.
В-2: Как NAT реализован в домашних маршрутизаторах (обычно с ограниченным портом), но они также предварительно настроили правила iptables и настроили Linux
1 ответ
Если вы хотите "контролировать" различные типы NAT с гостями, работающими под любым гипервизором, то вам нужно запускать гостей в "мостовом" сетевом режиме.