Назад | Перейти на главную страницу

Теоретический вопрос NAT / PAT

Учитывая следующую упрощенную сеть

Сеть http://www.vbforums.com/picture.php?albumid=18&pictureid=47

[IMG]http://www.vbforums.com/picture.php?albumid=18&pictureid=47[/IMG]

Можно ли создать пулы NAT / PAT так, чтобы ПК, подключенные к сети, можно было идентифицировать по их номеру порта. Я понимаю, что если я назначу общедоступный IP-адрес каждому пользователю, я смогу его идентифицировать. Что я пытаюсь сделать, так это сохранить общедоступные IP-адреса, но сохранить возможность идентифицировать пользователя из общедоступной сети. Если ваш ответ зависит от поставщика, меня это устраивает. Заранее спасибо.

Все, что вам нужно сделать, это посмотреть на текущую таблицу трансляции nat на устройстве nat, чтобы увидеть, какой порт соответствует IP. Например, на маршрутизаторе Cisco 192.168.1.82, подключающемся к Google через pat к общедоступному IP-адресу от 12.12.12.12:

router1#show ip nat trans 
tcp 12.12.12.12:33949  192.168.1.82:33949 66.249.80.104:80 66.249.80.104:80

Обновить:
Думаю, теперь я понимаю. Я не знаю какой-либо реализации этого, но я не понимаю, почему это не сработает. Теоретически вы можете сопоставить каждый внутренний IP-адрес с другим диапазоном портов. Поскольку перегрузка переводит внутреннюю комбинацию портов ip / tcp src на внешний исходный порт ip / tcp, вы можете назначить определенные диапазоны внешних исходных портов для каждого внутреннего IP-адреса (предыдущие также могут быть портами udp). Например:

32000-33999 public ip's tcp/udp src ports on ip 12.12.12.12. will be used for 192.168.1.2
34000-35999 public tcp/udp ports on ip 12.12.12.12. will be used for 192.168.1.3

Проблема с перегрузкой заключается в том, что вы начинаете ограничивать возможные соединения, потому что вместо обычной комбинации из 4 элементов для идентификации сеанса (исходный IP-адрес, исходный порт, целевой IP-адрес, порт назначения) вы ограничиваете его до 3. Поэтому, когда вы ограничьте один из них еще больше, ограничив диапазон портов, вы ограничиваете количество сеансов. Итак, в моем примере выше у вас с IP 192.168.1.2 может быть только до 2000 подключений к любому конкретному общедоступному IP. Я также не знаю, работает ли код перегрузки таким образом, поскольку он может использовать только исходный порт для преобразования вместо исходного порта / исходного IP-адреса (здесь речь идет о возвратных пакетах), чтобы быть быстрее.

Возможно, вам удастся обойти это с помощью обмана с порядковыми номерами, но я думаю, что для этого потребуется много переделывать TCP и открыть дыры в безопасности. Если это будет реализовано, я буду немного удивлен. NAT - это своего рода хакерство, которое, я думаю, поможет с нехваткой ip. PAT / Overload - это своего рода дальнейший взлом этого, превращающий его в хакерский взлом. Начать идентификацию сессий по порядковым номерам тогда было бы взломом или взломом. В этот момент это действительно время IPv6 уже :-)

На маршрутизаторе Cisco вы можете делать следующее:

ip nat log translations syslog

ведение журнала <IP-адрес сервера системного журнала>

Это приведет к тому, что каждый перевод будет отправлен на сервер системного журнала. Записи будут выглядеть примерно так:

29 апреля 21:25:06 rgw-01 233: 000238: 29 апреля 21: 25: 05.858 EDT:% IPNAT-6-CREATED: tcp 192.168.0.254:56334 68.175.123.94:56334 1.1.1.1:80 1.1.1.1: 80

который отражает вывод команды "show ip nat translation" на маршрутизаторе. Вы должны получать сообщения журнала, когда перевод создается и удаляется.

Итак, если это только для общего исходящего доступа из вашей сети, тогда все, что вам действительно понадобится, это стандартный блок NAT-T + DHCP. С помощью DHCP вы можете либо использовать статический DHCP, либо иметь большое время аренды, чтобы внутренние машины сохраняли один и тот же адрес. Тогда вы всегда сможете узнать, кто есть кто.

Проблема с использованием портов на публичной стороне для идентификации внутренних машин, когда вы просто выполняете общий исходящий доступ, заключается в том, что порты возврата будут генерироваться случайным образом на сервере, к которому подключается пользователь. Так что нет никакого способа действительно отследить или угадать, что это будет.

Если вы выполняли входящие соединения, вы просто настраиваете переадресацию PAT / Port на выбранный внутренний адрес, но здесь это не так.

Что касается решений, практически все, что есть на рынке, может сделать это, вы также можете настроить IPtables + dhcpd в Linux или решение PF + dhcpd на машинах BSD.