2009-08-06 2 views
3

Я хочу подключиться к системе, которая находится за маршрутизатором. Я знаю общий адрес маршрутизатора, а также частный ip (всегда фиксированный) системы. Как установить соединение сокета с частным ip?подключение к частному ip

+0

Это называется «частным» по причине ... – skaffman

ответ

4

Вот почему некоторые люди говорят, что они находятся за «брандмауэром», когда они находятся за маршрутизатором. Злые вирусы Интернета не могут использовать какое-либо программное обеспечение на компьютере за маршрутизатором (при условии, что администратор маршрутизатора не настроил его забавным способом, например, включив DMZ).

У вас еще есть несколько вариантов:

  • Поговорите с маршрутизатором администратора и заставить его вперед порт для вас
  • Возьмите маршрутизатор и положить ваш «целевой» компьютер, на котором Ваш маршрутизатор был, или включить DMZ (это имеет смысл только в том случае, если за маршрутизатором был только один компьютер). Warrning: сначала установите брандмауэр на целевом компьютере!
  • Поверните розетку на 180 градусов. Сделать компьютер за маршрутизатором установить соединение с сервером, который имеет публичный IP-адрес
  • использовать что-то вроде UPnP, если ваш маршрутизатор поддерживает его
  • Получить выделенный IP-адрес вашего компьютера и настроить маршрутизатор для переключения всего трафика этот IP-адрес для вашего компьютера (это похоже на DMZ, но будет работать, если у вас есть несколько компьютеров за маршрутизатором). Warrning: сначала установите брандмауэр на целевом компьютере!
  • Используйте обход NAT. Существует очень хорошая статья по теме here. Упрощенная версия заключается в том, что клиент устанавливает соединение с каким-то удаленным сервером. Сервер может видеть номер открытого порта на маршрутизаторе клиента, и этот порт назначается машине клиента, поэтому он (или другой компьютер, использующий эту информацию) может установить соединение с этим портом и обратиться к приложению клиента. Warrning: это не работает со всеми маршрутизаторами. Некоторые маршрутизаторы просто не позволят этому произойти.
+3

Просто записка. «NAT-пирсинг», как упоминалось выше, обычно упоминается как обход NAT :) http://en.wikipedia.org/wiki/NAT_traversal –

1

Это скорее вопрос конфигурации маршрутизатора, а не вашей реальной программы. Если маршрутизатор не настроен перенаправлять трафик в частную систему, нет способа заставить его подключиться к вам - скорее, частной системе придется открыть соединение самостоятельно.

1

Простейшей вещью является, вероятно, forward the port из системы, с которой вы хотите подключиться через маршрутизатор.

1

Строго говоря, ответ на ваш вопрос «вы не можете». Однако вы можете включить DNAT (Destination Network Address Translation) на вашем маршрутизаторе. Вы подключаетесь к определенному порту на маршрутизаторе и перенаправляете соединение к внутреннему ip. Внутренний ip (и порт) настраиваются в настройках маршрутизатора и не известны подключающему клиенту.