4

У меня есть приложение, которое разделено на несколько частей (процессов), взаимодействующих через TCP/IP, используя предопределенный порт на localhost.

Это всегда безопасно? Может ли какой-то брандмауэр (корпоративный, локально установленный, брандмауэр Windows и т.д.) Блокировать этот трафик? Или могут какие-то пользовательские настройки в ОС, которые могут блокировать этот трафик?

Меня интересуют ОС Windows (от XP до 7) и Linux (Ubuntu, RHEL, SUSE)

2 ответа2

7
  • Трафик до 127.0.0.0/8 и до ::1/128 обрабатывается внутри стека TCP/IP. Он не достигает физической сетевой карты и никогда не покидает компьютер, поэтому он не может быть заблокирован корпоративными брандмауэрами.

  • Поскольку петлевые сокеты очень распространены для IPC, хорошие брандмауэры никогда не должны блокировать его. (Брандмауэр Windows не делает.) Тем не менее, есть некоторые чрезмерно параноидальные ... Однако в таких случаях я бы обвинял брандмауэр, а не ваше программное обеспечение.

  • В Unix возможно (случайно) отключить петлевой интерфейс (обычно lo). Опять же, это очень необычно.

  • Вместо того, чтобы жестко закодировать порт, необходимо использовать socketpair() , чтобы избежать коллизий портов.

  • Еще лучше было бы использовать Unix-сокеты в Linux и именованные каналы в Windows.

2

Все эти ОС поддерживают запуск программного обеспечения брандмауэра. Они могут блокировать локальные соединения, хотя это не очень обычно (по моему опыту).

Есть много приложений / сервисов, которые делают это. Просто попробуйте запустить netstat -an на своем компьютере: скорее всего, вы увидите довольно много приложений с открытыми сокетами для прослушивания на 127.0.0.1 .

Я не знаю пользовательских настроек, которые могли бы помешать этому работать в Linux. Не знаю, для Windows. Но опять же, это обычная техника.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .