piątek, 25 kwietnia 2014

Program SJO BeSTi@ serwer – stacja robocza – porady

Kilka porad dotyczących konfiguracji systemu operacyjnego oraz zapory sieciowej firewall do współpracy z systemem SJO Bestia Sygnity pracującego w układzie serwer – stacja robocza.

Krótko mówiąc należy pamiętać o tym by:

  • po instalacji programu SJO Bestia, ale przed pierwszym uruchomieniem zmienić uprawnienia na katalog programu z możliwością do modyfikacji dla użytkownika.
  • odblokować porty: UDP 1434 i TCP (nr dynamiczny odczytany w parametrach SQL Server Configuration Manager) na zaporze sieciowej firewall
  • dopisać do pliku hosts na stacji roboczej “IP Nazwa_mnemoniczna” serwera np.: “192.168.0.123    JUMP-PC3”

Poniżej szczegółowy opis w/w zagadnień.

 

Komunikaty błędu podczas pierwszego uruchomienia

Po zainstalowaniu programu SJO Bestia, podczas pierwszego uruchomienia zanim zdążymy sią zalogować zobaczymy komunikat błędu “Nieudana próba utworzenia bazy danych”, a po zalogowaniu i zaakceptowaniu warunków licencji komunikat “Nie udało się zapisać informacji o przeczytaniu warunków licencji z powodu braku uprawnień. Skontaktuj się z administratorem

image

Oba komunikaty dotyczą braku uprawnień do zapisu dla użytkownika w katalogu “C:\Program Files (x86)\SJOBestia”
O tyle jest to dziwne, że dzieje się tak nawet gdy jesteśmy zalogowani jako administrator systemu. Dzieje się tak ponieważ katalog C:\Program Files wymaga podwyższonych uprawnień i jest kontrolowany przez UAC User Account Control zabezpieczający przed działaniem programów typu malware.

Aby zmienić uprawnienia do zapisu dla Użytkowników systemu należy we właściwościach katalogu “C:\Program Files (x86)\SJOBestia” (prawy klawisz myszki / Właściwości) w zakładce Zabezpieczenia wybrać przycisk Edytuj (1).

image

Wybrać grupę Użytkownicy, zaznaczyć opcje Modyfikacja i zaakceptować OK.

image

Ponownie we właściwościach katalogu w zakładce Zabezpieczenia wybrać przycisk Zaawansowane (2) i zaznaczyć opcje jak na rysunku poniżej, aby zmiana uprawnień została dziedziczona dla obiektów podrzędnych.

image

Teraz po zmianie uprawnień na katalog i po uruchomieniu programu SJO Bestia komunikat błędu “Nieudana próba utworzenia bazy danych” pojawi się tylko raz, gdyż dotyczy poprzedniej próby.

Aby uniknąć komunikatów błędu opisanych wyżej zmianę uprawnień najlepiej zrobić bezpośrednio po instalacji, ale przed pierwszym uruchomieniem programu SJO Bestia.

 

Instalacja SJO Bestia na stacji roboczej

Po zainstalowaniu programu na stacji roboczej po pierwszym uruchomieniu program żąda konfigurowania połączenie z bazą danych SQL na serwerze.

Po wypełnieniu parametrów wg instrukcji pojawi się błąd “Podany login/hasło nie są autoryzowane przez serwer

image

Oznacza to, że zapora sieciowa (firewall) na komputerze dedykowanym jako serwer aplikacji blokuje ruch sieciowy. W celu sprawdzenia poprawności działania aplikacji wyłączymy na chwilę zaporę sieciową (Włączymy ją ponownie po jej skonfigurowaniu).

Po wyłączeniu zapory sieciowej test połączenia powinien się powieść

image

ale po zaakceptowaniu przyciskiem OK może nadal występować błąd “Nie udało się podłączyć do bazy danych, zdefiniuj parametry połączenia”.

image

Sytuacja ta wydaje się dziwna, ponieważ z jednej strony test “Sprawdź połączenie” zakończył się pomyślnie, a z drugiej strony aplikacja nie może się podłączyć do bazy danych.

Problem tkwi w DNS (Domain Name System) czyli zamianie nazwy mnemonicznej serwera na jego IP.

image

Jeśli zamiast wpisu w polu Serwer nazwy JUMP-PC3 wpiszemy IP 192.168.0.123 jak niżej:

image

to aplikacja będzie działać poprawnie.

Aby korzystać z nazw mnemonicznych jak na przykład JUMP-PC3 należy dodać odpowiedni wpis do pliku konfiguracji systemu hosts znajdującego się w katalogu “C:\WINDOWS\system32\drivers\etc” na stacji roboczej, gdzie zainstalowaliśmy aplikację SJO Bestia jak to pokazano poniżej.

image

Błąd związany z DNS nie zawsze musi wystąpić (jeśli parametry karty sieciowej stacji roboczej były tak skonfigurowane, że router lokalny, który jednocześnie był bramą do Internetu był również wskazany jako serwer DNS to błąd ten występował, natomiast jak skonfigurowałem kartę sieciową z takim adresem DNS  jaki jest wpisany w parametrach routera problemu nie było).

 

Konfiguracja zapory sieciowej firewall

Zapora sieciowa (firewall) na serwerze aplikacji SJO Bestia powinna być tak skonfigurowana aby pozwalała na ruch sieciowy przychodzący dla odpowiedniego portu TCP i UDP. Teoretycznie serwer SQL potrzebuje otwarcia portów dla reguł przychodzących o numerach: dla protokołu TCP 1433 oraz UDP 1434. (program sqlservr.exe wykorzystuje port TCP 1433 lub dynamiczny o czym poniżej, a sqlbrowser.exe - port UDP 1434)

W praktyce dla instancji SQL aplikacji SJO Bestia port protokołu UDP rzeczywiście jest ustawiony na 1434 to z portem dla protokołu TCP jest już inaczej. Port protokołu TCP przyjmuje wartości dynamiczne różne dla różnych instalacji. W moim przypadku podczas wykonania dwóch instalacji na tym samym komputerze (instalacja, deinstalacja i ponowna instalacja) raz wartość tego portu była 49526, a przy drugiej instalacji 49949.

Wobec powyższego mamy do wyboru, albo zidentyfikujemy wartość portu TCP dla naszej instalacji, albo też utworzymy regułę ruchu przychodzącego TCP ze wskazaniem na program sqlservr.exe.

Aby zidentyfikować wartość portu TCP można to zrobić na kilka sposobów. Można skorzystać z narzędzia SQL Server Configuration Manager, można użyć systemowego narzędzia linii komend netstat lub też aplikacji TCPView narzędzi Sysinternals Marka Russinovich.

Poniżej opiszę jak to zrobić.

  1. Sposób z wykorzystaniem narzędzi Configuration Tools zestawu Microsoft SQL Server 2005.  Uruchamiamy narzędzie SQL Server Configuration Manager znajdujące się w Menu Start / Microsoft SQL Server 2005 / Configuration Tools. Znajdujemy tam Protocols for SJOBESTIASQL i klikamy prawy klawisz myszy / Właściwości na TCP/IP

    image
    Przechodzimy na zakładkę IP Addresses i na samym dole znajduje się parametr IPAll - TCP Dynamic Ports. Parametr ten jest szukaną wartością nr portu TCP - którą należy odblokować na zaporze sieciowej.

    image
  2. Inną metodą identyfikacji portu dynamicznego TCP jest skorzystanie z aplikacji linii komend netstat. Należy to wykonać przy aktywnym połączeniu stacji roboczej z bazą SQL serwera (uruchomiona aplikacja SJO Bestia na stacji z podłączeniem do bazy SQL na serwerze).

    image

    Znając IP serwera i stacji roboczej zidentyfikujemy dynamiczny port TCP znajdujący się za adresem IP serwera (po dwukropku) - tak jak to pokazano na powyższym rysunku (w czerwonej ramce są parametry serwera, a pomarańczowej - stacji roboczej).
  3. Można też zidentyfikować port za pomocą aplikacji TCPView z zestawu narzędzi Sysinternals Marka Russinovicha jak niżej.

image

 

Znając porty, które należy odblokować na zaporze sieciowej możemy przystąpić do jej konfigurowania. Uruchamiamy więc aplet Menu Start / Panel sterowania / Systemy i zabezpieczenia / Zapora Systemu Windows / Ustawienia Zaawansowane następnie wybieramy po kolei: 1.Reguły przychodzące 2.Nowa reguła … 3.Typ reguły – Port

image

Dla portu dynamicznego TCP wpisujemy wyznaczoną wartość. W tym przypadku jest to port nr 49949.

image

Następnie określamy akcję do wykonania – Zezwalaj na połączenie:

image

Określamy zastosowanie reguły do Domeny i sieci Prywatnej

image

i na koniec podajemy nazwę dla reguły np.: ”SQL TCP”

image

To samo wykonujemy dla portu 1434 UDP pamiętając by wybrać port UDP w kreatorze w miejscu zapytania”Czy ta reguła dotyczy protokołu TCP, czy UDP?”. Na koniec podajemy nazwę dla reguły np.: ”SQL UDP”

image

Po skonfigurowaniu zapory sieciowej w/w sposób możemy ją włączyć i sprawdzić czy nie zakłóca ona połączeń stacji roboczej z serwerową bazą danych programu SJO Bestia.

Gdyby z jakiegoś powodu nie udało nam się ustalić portu dynamicznego TCP to możemy zdefiniować regułę przychodzącą jako typ na program nie na port podając nazwę programu wraz ze ścieżką “C:\Program Files (x86)\Microsoft SQL Server\MSSQL.2\MSSQL\Binn\sqlservr.exe” (należy pamiętać o wybraniu Typ protokołu TCP w zakładce „Protokoły i porty”).

image