Jak skonfigurować przekierowanie portów w Amazon EC2

16

Mam aplikację internetową działającą na Amazon EC2. Nasłuchuje na porcie 9898.

Mogę uzyskać do niego dostęp, wprowadzając adres IP i numer portu.

np. 1.2.3.4:9898

Jednak tak naprawdę chciałbym móc nie wprowadzać numeru portu.

Po zbadaniu tego wydaje się, że rozwiązaniem może być przekierowanie portów - tzn. Przekieruj żądania HTTP otrzymane na domyślnym porcie (80) na mój niestandardowy port (9898).

Czy to jest właściwa droga? Jeśli tak, to jak to skonfigurować w EC2?

Jeśli nie, to jak mam osiągnąć to, czego chcę?

Z góry dziękuję za wszelką pomoc.

Aktualizacja

Powinienem wspomnieć, że instancja EC2 to AMI systemu Windows Server 2012.

ksl
źródło
Musisz mieć coś przed swoim serwerem, jak HAProxy, aby przekazywać żądania .. lub korzystać z iptables. Amazon nie obsługuje przekierowania portów.
Nathan C

Odpowiedzi:

10

Najłatwiejszym sposobem na zrobienie tego bez samodzielnego instalowania jest umieszczenie modułu Amazon Elastic Load Balancer przed instancją. Umożliwiają one przekierowywanie portów zgodnie z Twoimi intencjami.

ceejayoz
źródło
Próbowałem twojej sugestii, ale nie mogę uruchomić testu ping.
ksl
ceejayoz ma rację ELB jest na to sposobem. Użyj protokołu TCP, jeśli HTTP nie działa. Przepraszam za mało reputacji, by móc komentować
Pestouille
Cześć, proszę o rozwinięcie.
ksl
Spróbuj zezwolić ICMP na Zaporze systemu Windows Server z adresów ELB
Tom O'Connor
Zapora jest już domyślnie skonfigurowana, aby zezwalać na cały ruch ICMP V4.
ksl
6

Masz dwie opcje.

1) Skonfiguruj zwrotny serwer proxy, aby przekazywać żądania HTTP (zakładając, że jest to HTTP) na inny port.

Powinno to być tak proste, jak: Zainstaluj apache, włącz moduł proxy_http, umieść coś takiego:

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>
ProxyPass / http://localhost:9898/
ProxyPassReverse / http://localhost:9898/

2) Skonfiguruj tabele IP, aby przekazywać pakiety .

Tom O'Connor
źródło
Powinienem był stwierdzić, że instancja EC2 to AMI systemu Windows Server 2012. Nie udało mi się ustalić, jaki jest odpowiednik tabel IP systemu Windows.
ksl
Dzięki za odpowiedzi. Próbowałem użyć netsh, jak zasugerowałeś, ale nie mogę go uruchomić. Przesyłam żądania HTTP na port 80 zarówno na publiczny, jak i prywatny adres IP mojej instancji EC2.
ksl
-3

ponieważ widziałem komentarz na temat używania iptables, podzielę się swoim doświadczeniem w systemie Linux ec2. Znalazłem doskonały artykuł o portach przekierowujących dla Node.js. Jeśli przejdziesz do instrukcji dotyczących edycji pliku sysctl.conf, zobaczysz instrukcje dotyczące przekazywania. Moja procedura dla Linuksa różniła się nieznacznie od Ubuntu. Artykuł jest: http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

Praca odbywa się za pośrednictwem ssh. Jedyną przeszkodą, na jaką natknąłem się, było dwukrotne przeprowadzenie trasy bez opróżniania iptables między nimi, a moja aplikacja internetowa nie była widoczna, dopóki nie opróżniłem i nie załadowałem ponownie. Wiem, że to okropny obraz na zakończenie, przepraszam.

Brian
źródło