Nie można wyświetlić tego widżeta.
Nie można wyświetlić tego widżeta.
Nie można wyświetlić tego widżeta.

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP


Poziom 11, Recenzent
  • 11
  • 27
  • 0

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

Sytuacja wygląda tak:

Mam w sieci lokalnej serwer HTTP(S), nasłuchujący na portach 80 i 443. Serwer ma zarezerwowany adres IP (tj. konfigurację bierze przez DHCP, ale zawsze dostaje ten sam adres IP). Chcę mieć do niego dostęp z internetu, więc przekierowałem w Funboksie odpowiednie porty. Mam na Funboksie skonfigurowaną usługę dynamicznego DNS, więc załóżmy że Funbox jest pod adresem foobar.com. Funbox ma wyłączony dostęp zdalny. Ma zainstalowaną najnowszą wersję oprogramowania (SGF6-pl-01.06.13.17_20.04.14).

Chcę móc zawsze połączyć się z serwerem przy pomocy adresu foobar.com, niezależnie od tego czy jestem w tej samej sieci lokalnej co serwer.

Gdy łączę się z https://foobar.com spoza sieci lokalnej zawierającej serwer (np. z telefonu przez sieć komórkową), wszystko działa.

Gdy łączę się z tej samej sieci lokalnej co serwer, nie mogę się połączyć. Przeglądarka pokazuje, że certyfikat jest podpisany przez Orange, stąd przypuszczenie że Funbox próbuje mi zaserwować stronę konfiguracyjną (ale coś mu nie wychodzi, bo wysyła pustą odpowiedź - ERR_EMPTY_RESPONSE w Chromium). Jeśli użyję wewnętrznego IP Funboksa zamiast zewnętrznego, poprawnie dostaję stronę konfiguracyjną.

Dodam, że na moim serwerze działają różne usługi na innych portach (np. serwer VPN), i jestem w stanie się z nim połączyć przy pomocy zewnętrznego IP niezależnie od tego czy jestem wewnątrz sieci lokalnej, czyli tzw. hairpinning działa.

Szukałem jakiegoś ustawienia, które pozwoliłoby mi zmienić port HTTPS strony konfiguracyjnej, ale niczego takiego nie znalazłem.

W teorii mógłbym obejść ten problem stawiając na serwerze resolver DNS który przekierowuje foobar.com na wewnętrzny IP serwera, ale Funbox nie pozwala mi zmienić IP serwera DNS.

Idealnie byłoby gdyby Funbox na wewnętrznym adresie IP serwował stronę konfiguracyjną (tylko dla adresów źródłowych z wewnątrz sieci), a na zewnętrznym IP poprawnie przekierowywał pakiety, niezależnie od tego czy adres źródłowy jest wewnątrz sieci lokalnej.

31 ODPOW. 31

Poziom 25, Specjalista
  • 1014
  • 2052
  • 27

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

@bajolo: to może ustaw u siebie swój DHCP ze swoim DNS... Wiem że to obejście a nie rozwiązane problemu ale zadziała jeśli Twój serwer na to pozwoli - nie do końca rozumiem kto w tej sytuacji cerytfikuje tożsamość serwera.

Na dostęp "z zewnątrz" to nie będzie miało wpływu, a jeśli "wewnątrz" problemem jest tylko rozwiązanie nazwy na IP to własny DNS sprawę załatwi nawet lepiej niż zewnętrzny dynamiczny DNS. Jeśli masz IPTV to tylko musiałbyś zadbać o to, żeby dla dekodera serwerem DNS był nadal  FB.

Naturalnie DHCP w FB trzebaby wtedy wyłączyć.

 


Poziom 11, Recenzent
  • 11
  • 27
  • 0

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

Chciałbym uniknąć ustawiania własnego serwera DHCP - dla mnie to wysiłek niewspółmierny do rozwiązywanego problemu 😄 do tego w moim przypadku nie ma gwarancji że serwer jest cały czas włączony.


Poziom 22, Pasjonat
  • 582
  • 1066
  • 11

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

No nie żartuj, stawiasz http, https, vpn, a tego nie ogarniesz? Kaman!


Poziom 11, Recenzent
  • 11
  • 27
  • 0

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

Ogarnąć raczej bym to ogarnął, ale jak już wspomniałem serwer niekoniecznie będzie chodził 24/7, a w sieci są inne urządzenia które potrzebują serwera DHCP.


Poziom 22, Pasjonat
  • 582
  • 1066
  • 11

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

Czy na pewno przekierowałeś port 443 zgodnie ze swoim zamierzeniem? Spróbowałem odtworzyć Twoją sytuację u siebie, nie mając przekierowanego portu 443 i uzyskałem połączenie, mniej więcej z takim efektem (tutaj uwaga: mam funboksa3, a nie 2, jak może sugerować poniższa zawartość).

Pokaż szczegóły
$ openssl s_client -connect moje.publiczne.ip:443
CONNECTED(00000003)
depth=1 C = FR, O = Orange, OU = 0002 380129866, CN = Orange Devices Auth Web CA
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = PL, O = Orange, CN = Web admin Funbox2 G6
verify error:num=10:certificate has expired
notAfter=Jun 29 15:35:19 2020 GMT
verify return:1
depth=0 C = PL, O = Orange, CN = Web admin Funbox2 G6
notAfter=Jun 29 15:35:19 2020 GMT
verify return:1
---
Certificate chain
 0 s:C = PL, O = Orange, CN = Web admin Funbox2 G6
   i:C = FR, O = Orange, OU = 0002 380129866, CN = Orange Devices Auth Web CA
 1 s:C = FR, O = Orange, OU = 0002 380129866, CN = Orange Devices Auth Web CA
   i:C = FR, O = Orange, OU = 0002 380129866, CN = Orange Devices Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEtjCCAp6gAwIBAgIUCR4/9Mo6/jtdBg6xBFj8PkpkGUUwDQYJKoZIhvcNAQEL
BQAwXDELMAkGA1UEBhMCRlIxDzANBgNVBAoMBk9yYW5nZTEXMBUGA1UECwwOMDAw
<i tak dalej - ciach>

i nie jest to żadna stronka, bo odpowiedzią na GET / było rozłączenie. Natomiast po przekierowaniu portu 443 w miejsce gdzie nic nie nasłuchuje (bo nie mam nic do zaserwowania przes https), mam połączenie odrzucone:
Pokaż szczegóły
$ openssl s_client -connect moje.publiczne.ip:443
34371108864:error:0200203D:system library:connect:Connection refused:/usr/src/crypto/openssl/crypto/bio/b_sock2.c:110:
34371108864:error:2008A067:BIO routines:BIO_connect:connect error:/usr/src/crypto/openssl/crypto/bio/b_sock2.c:111:
connect:errno=61

Może spróbuj najpierw potrenować na porcie innym niż 443, dla upewnienia się, że Funbox się nie wtrąca?

 

PS.

Głupi ten wasz edytor. Ugrzązł mi tekst w pierwszym spoilerze, który miał być między spoilerami i nijak nie mogę rozdzielić spoilerów. Nawet w HTML nie jest dostępny w postedycji.


Poziom 11, Recenzent
  • 11
  • 27
  • 0

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

Myślę że przekierowanie jest takie jakie ma być, bo "z zewnątrz" elegancko łączę się z serwerem.

Dzięki za sugestię spróbowania z innym portem: uruchomiłem serwer HTTPS na porcie 8443, i przekierowałem na niego zewnętrzny port 8443. Będąc w sieci lokalnej serwera, https://foobar.com:8443 ładuje się elegancko. Gdy przekierowałem na niego zewnętrzny port 443, https://foobar.com nie daje odpowiedzi, więc ewidentnie Funbox się wtrąca na porcie 443.


Poziom 21, Pasjonat
  • 75
  • 196
  • 5

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP


Gdy przekierowałem na niego zewnętrzny port 443, https://foobar.com nie daje odpowiedzi, więc ewidentnie Funbox się wtrąca na porcie 443.

Ja mam przekierowany port 443 TCP na 1194 i takie przekierowanie działa z zewnątrz i z wewnątrz. W logach OpenVPNa widać próby ustanowienia sesji SSL (jak jakiś robot próbuje się wbić) więc może sprawdź u siebie czy też widzisz takie próby połączenia. Może to nie wina FB tylko firewalla na Twoim serwerze? Przy HNAT adres źródłowy jest adresem bramy a nie zewnętrznym (publicznym).

 

Edit:

Jak się dobrze przyjrzałem to jednak próba połączenia z wewnątrz skutkuje w tym przypadku połączeniem przychodzącym z adresem publicznym FB a nie z prywatnym adresem bramy.


Poziom 11, Recenzent
  • 11
  • 27
  • 0

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

W logach widać próby ustanowienia sesji TLS z różnych publicznych IP.

Skoro przy HNAT adres źródłowy jest publicznym adresem bramy, to serwer raczej nie powinien odróżniać pakietów z internetu od pakietów z sieci lokalnej po przejściu przez HNAT. Tak czy siak, sprawdziłem reguły iptables i niczego podejrzanego nie znalazłem.

Gdy próbuję łączyć się z https://foobar.com z sieci lokalnej, w logach serwera nic się nie pojawia, tak jakby pakiety w ogóle do niego nie docierały.

@Samotnick, który model FB posiadasz?


Poziom 21, Pasjonat
  • 75
  • 196
  • 5

Funbox 6 - dostęp do serwera HTTP(S) z sieci lokalnej używając zewnętrznego adresu IP

@bajoloFB3.