2016-10-02 2 views
2

Google Compute Engine에서 TCP 소켓 서버를 호스트하려고하는데 GCE 방화벽 규칙 (socket-port 0.0.0.0/0 tcp : 11000)에 다음 규칙을 추가했습니다. 모든 대상)하지만 공용 IP를 사용하여 외부에서 포트에 액세스 할 수 없습니다 (내 경우 임시).GCE가 특정 포트에서 들어오는 트래픽을 허용합니다.

이 경우 더 이상 할 일이 있습니까? 추가 규칙을 설정하기 위해 VM 자체에서 ufw를 사용해야합니까?

도움이나 힌트를 보내 주시면 감사하겠습니다.

편집 : 1) 방화벽 설정 :

NAME 네트워크 SRC_RANGES 규칙 SRC_TAGS TARGET_TAGS

기본적으로 HTTP를 허용 0.0.0.0/0은 TCP 기본 : (80)는 HTTP 서버

기본-수 -https 기본 0.0.0.0/0 TCP : 443 HTTPS 서버

기본 - 수 - ICMP 기본 0.0.0.0/0 ICMP

,536,913 63,210

기본 - 수 - 내부 기본 10.128.0.0/9 TCP : 65535, UDP : 65535, ICMP

기본 - 수 - RDP 기본 0.0.0.0/0 TCP : 3389

default- 수-ssh를 기본 0.0.0.0/0 TCP : 22 TCP

소켓 포트 기본 0.0.0.0/0 :

: 11000

2) VM 자체 SocketListener 클래스 (C#을)에 대한 오류를 제공합니다

요청을 할당 할 수 없습니다.

"IPEndPoint로 기계의 공용 IP 구성 System.Net.Sockets.Socket.Bind (를 EndPoint localEP)에서 System.Net.Sockets.Socket.DoBind (를 EndPoint endPointSnapshot, SocketAddress를 않은 SocketAddress) 에서 를 해결 포트 11000

+0

1) 여기에 방화벽 설정을 붙여 넣습니다. 2) 어떤 오류 코드가 나옵니까? 3) 내부 IP를 통해 동일한 네트워크에있는 다른 VM에서 액세스하여 서비스가 작동 중인지 확인하십시오. – Dagang

+0

@ 대간 내 질문을 편집했지만 현재 다른 VM에서 액세스 할 수 없습니다. – Salem

답변

1

이것은 GCE의 고전적인 문제이므로 외부 IP 대신 0.0.0.0으로 서버 소켓을 바인딩해야합니다. 이것이 의도적인지 여부는 알 수 없습니다.

외부 IP는 가상 IP입니다. 인프라는 IP를 대상으로 트래픽을 VM에 보내는 방법을 알고 있지만 VM의 네트워크 인터페이스에 바인딩되어 있지 않습니다. VM에서 sudo ifconfig을 실행하면 eth0에 내부 IP 만 표시됩니다.

+0

놀라운! 감사! – Salem

관련 문제