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-адреса, но сохранить возможность идентифицировать пользователя из общедоступной сети. Если ваш ответ зависит от поставщика, это нормально для меня. Заранее спасибо.
3 ответа
На маршрутизаторе Cisco вы можете сделать следующее:
ip nat log translations syslog
ведение журнала
Это приведет к тому, что каждый перевод будет отправлен на сервер системного журнала. Записи будут выглядеть примерно так:
29 апреля 21:25:06 rgw-01 233: 000238: 29 апреля 21: 25: 05.858 ПО ВОСТОЧНОМУ ВРЕМЕНИ: %IPNAT-6-СОЗДАН: 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 на устройстве nat, чтобы увидеть, к какому порту подключен IP-адрес. Например, на маршрутизаторе Cisco 192.168.1.82, подключающемся к goo gle через 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. Таким образом, когда вы ограничьте одно из них еще больше, ограничив диапазон портов, который вы ограничиваете количество сеансов. Таким образом, в моем примере выше, у вас IP2 192.168.1.2 может быть только до 2000 соединений с любым конкретным публичным IP. Я также не знаю, работает ли код перегрузки, как это, так как он может использовать только исходный порт для преобразования вместо исходного порта / исходного IP (говоря о возвращаемых пакетах здесь), чтобы быть быстрее.
Может быть, вы могли бы обойти это с помощью хитрости с порядковым номером, но я думаю, что это займет много времени для переделки tcp и откроет дыры в безопасности. Если это будет реализовано, я буду немного удивлен. Я думаю, что NAT - это своего рода взлом, чтобы помочь с нехваткой IP. PAT/Overload является своего рода дальнейшим взломом, превращая его в взлом. Начать идентификацию сеансов по порядковым номерам было бы хаком хака. К этому моменту действительно пришло время IPv6:-)
Итак, если это только для общего доступа, исходящего из вашей сети, то все, что вам действительно нужно, это стандартный NAT-T + DHCP box. С помощью DHCP вы можете либо использовать статический DHCP, либо иметь длительное время аренды, так что машины внутри сохраняют один и тот же адрес. Тогда ты всегда сможешь узнать, кто есть кто.
Проблема с использованием портов на общедоступной стороне для идентификации внутренних машин, когда вы просто делаете общий исходящий доступ, заключается в том, что обратные порты будут генерироваться случайным образом на сервере, к которому подключается пользователь. Так что нет способа реально отследить или угадать, что это будет.
Если вы выполняли входящие соединения, то вы просто настраивали переадресацию PAT/Port на выбранный внутренний адрес, но здесь это не так.
Что касается решений, то практически все на рынке будет делать это, вы также можете настроить IPtables + dhcpd в Linux или решение PF + dhcpd на машинах BSD.