2016-10-02 2 views
2

Я пытаюсь разместить сервер сокетов TCP в Google Compute Engine, я добавил следующее правило для правил брандмауэра GCE (sockets-port 0.0.0.0/0 tcp: 11000 Применить к все цели), но порт по-прежнему недоступен извне, используя публичный IP (в моем случае - эфемерный).GCE разрешает входящий трафик на определенных портах

В этом случае еще нужно сделать? должен ли я использовать ufw на самой виртуальной машине для установки дополнительных правил?

Любая помощь или подсказки будут оценены, thx.

EDIT: настройки 1) брандмауэра:

ИМЯ СЕТИ SRC_RANGES ПРАВИЛА SRC_TAGS TARGET_TAGS

по умолчанию-позволяют-клиента по умолчанию 0.0.0.0/0 TCP: 80 HTTP-сервер

по умолчанию, позволяют -https по умолчанию 0.0.0.0/0 TCP: 443 HTTPS-сервер

по умолчанию, позволяют-умолчанию ICMP 0.0.0.0/0 ICMP

по умолчанию, позволяют-внутреннее по умолчанию 10.128.0.0/9 TCP: 0-65535, УДП: 0-65535, ICMP

по умолчанию, позволяют-RDP по умолчанию 0.0.0.0/0 TCP: 3389

default- разрешить-SSH по умолчанию 0.0.0.0/0 TCP: 22

сокеты-порт по умолчанию 0.0.0.0/0 TCP: 11000

2) на самом класс SocketListener (C# VM) дает ошибку:

Невозможно назначить запрошенный адрес на System.Net.Sockets.Socket.DoBind (EndPoint endPointSnapshot, SocketAddress socketAddress) в System.Net.Sockets.Socket.Bind (EndPoint localEP)

«IPEndPoint состоит из публичного IP машины и порт 11000

+0

1) Вставьте настройки вашего брандмауэра здесь; 2) Какой код ошибки вы получаете? 3) Попробуйте получить доступ к нему с другой виртуальной машины в той же сети с помощью внутреннего IP-адреса, чтобы убедиться, что служба включена. – Dagang

+0

@ Dagang Отредактировал мой вопрос, но на данный момент я не могу получить доступ из другого vm. – Salem

ответ

1

Это классическая проблема с GCE, вы должны привязать свой серверный сокет к 0.0.0.0 вместо внешнего IP. Я не знаю, если это по дизайну.

Внешний IP-адрес является виртуальным IP-адресом. Инфраструктура знает, как направлять трафик на IP-адрес вашей виртуальной машины, но не привязан к сетевому интерфейсу виртуальной машины. Если вы запустили sudo ifconfig на виртуальной машине, вы увидите только внутренний IP-адрес eth0.

+0

Удивительно! Благодаря! – Salem

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