2009-10-26 3 views
2

Мне очень интересно, по крайней мере, попытаться реализовать NAT для моего старшего проекта. (Я делаю сетевой API). Это даже не требование моего проекта, просто мой интерес. Я знаю основы того, как это работает, исправьте меня, если я ошибаюсь: Два клиента подключаются к серверу, который не находится за NAT, и этот сервер, зная IP этих двух клиентов, сообщает клиентам подключиться к друг друга в одно и то же время. Таким образом, «Прорыв».Тестирование кода прорыва NAT

Это, кажется, не очень легко или ужасно сложно кодировать. Однако часть, на которую я застрял, - это тестирование этого. Есть ли разумная настройка, которую я могу сделать только с одним маршрутизатором/одним NAT и тремя моими доступными компьютерами?

Спасибо за любой совет!

+0

Я хотел бы услышать anyhting вы узнаете об этом. – Nate

+0

Я постараюсь вспомнить, чтобы вернуться сюда, если/когда я это сделаю. :) – bobber205

ответ

1

Что касается кода/теории об отключении NAT, я не могу давать советы, но я могу сделать некоторые предложения по настройке тестовой среды.

Вы можете загрузить копию m0n0wall и запустить ее в образе виртуального ПК (оба бесплатно). Это даст вам второй маршрутизатор без покупки какого-либо дополнительного оборудования. С помощью этого дополнительного маршрутизатора вы можете создать отдельную подсеть для ваших двух клиентов.

Еще один, удобный вариант - просто выбрать второй маршрутизатор, вы можете получить хороший довольно дешевый.

Затем настройте свой существующий маршрутизатор и сервер, как и сейчас, подсеть 192.168.1.x/24; затем настройте второй маршрутизатор (m0n0wall/hardware router) в качестве 192.168.2.x/24 подсети и подключите порт «Интернет» второго маршрутизатора к одному из портов «ПК» на вашем первом маршрутизаторе. Затем подключите обоих клиентов к второму маршрутизатору.

(я понимаю, вот немного запутанным, комментарий, если вы не можете следить за то, что я имею в виду)

1

Позвольте мне посмотреть, есть ли у меня это прямо. У вас есть два клиента, которые находятся за NAT, а сервер - нет. Оба клиента подключаются к серверу и сообщаются об общедоступном IP-адресе другого. Поскольку каждый из них теперь имеет пункт назначения, он отключается от сервера и напрямую подключается через соответствующие поля NAT друг к другу. Это ваше мышление? Если это так, у меня могут быть плохие новости для вас.

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

Предполагая, что вы каким-то образом обошли это, достаточно просто подключить обоих клиентов к «внутренней» стороне NAT и серверному ПК на «внешнюю» сторону. Тогда вы должны надеяться, что ваш ящик NAT достаточно умен, чтобы обходить пакеты с одного локального внешнего порта на другой. Я уверен, что netfiler может быть настроен таким образом, но я сомневаюсь, что домашний интернет-маршрутизатор (например, Linksys, NetGear и т. Д.) Сделает это с полки.

+0

Спасибо за информацию. Я знал, что, вероятно, было много препятствий, выполняющих это в той же ЛВС.Я могу попытаться все еще сделать это, но с моими ресурсами я, вероятно, не должен давать никаких обещаний моему профессору, да? – bobber205

Смежные вопросы