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.


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.


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 .


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.