Я пытаюсь понять, как именно NAT работает, чтобы решить еще одну большую проблему, вот моя установка Linux:
Интерфейс eth0 подключен к интернету (публичный IP-адрес)
eth1 подключен к локальной сети и выступает в качестве шлюза (имеет IP 192.168.1.1) для всех внутренних узлов для обеспечения доступа в Интернет.
Используются следующие правила iptable:
1)$iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
2)$iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
3)$iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Теперь я хотел бы понять, что именно делают правила 1,2 и 3?
Теперь возьмите этот пример:
ПК1 с IP-адресом 192.168.1.5 и MAC-адресом MAC1 необходим для доступа к URL-адресу www.google.com, он создает такой пакет
Предположим, MAC-адрес шлюза MAC2
source MAC | destination MAC | source ip | destination ip| payload
MAC1 MAC2 192.168.1.5 <google ip> <data>
Теперь шлюз (192.168.1.1) получает этот пакет на интерфейсе eth1 и изменяет исходный ip на ip-адрес интерфейса eth0 и обновляет некоторую таблицу записью для обратного просмотра при получении ответа.Какие правила отвечают за эту операцию rule1/rule 2?
И когда ответ получен на eth0, он изменяет IP-адрес назначения, просматривая запись таблицы, и отбрасывает пакет на eth1. что именно здесь делает rule3?
Скажем, приложение на шлюзе должно иметь доступ к Интернету и создает пакет и отправляет через eth0, когда ответ получен, как пакет направляется приложению на шлюзе вместо передачи пакета по интерфейсу eth1 в соответствии с правилом 1?
Обновить
При отправке пакета правило 3 изменяет исходный IP-адрес, и оно называется soruce NAT, то есть, когда на eth0 получен ответный пакет, адрес назначения изменился, не является ли это адресатом NAT? почему не правило для этого.?
Предположим, есть другой интерфейс eth2, который также подключен к Интернету с публичным ip, и в таблице маршрутизации существует маршрут по умолчанию для маршрутизации трафика через это устройство:
$ip route add default via <IP> dev eth2 scope link
Правила прямой цепочки iptables таблицы фильтра говорят о выходе пакетов через eth0, но в таблице маршрутизации есть маршрут по умолчанию через eth2, в этом случае какой интерфейс используется для Интернета?
Можно ли перенаправить трафик, который пересылается с eth1(локальный н / ж) на eth0, и трафик данных приложения, который отправляется на шлюзе через интерфейс eth2?
Спасибо!