Linux: Fedora Core 23: Jak wyłączyć protokół IPv6

10-Mar-2016

Koniec końców musiało się to stać. Trafiłem na aplikację, która łączy się do serwera z wykorzystaniem protokołu IPv6, z tym tylko, że serwer takiego połączenia nie akceptuje. Konkretnie mam tutaj na myśli serwer Sybase ASE, dla którego klientem jest jest instalator Job Schedulera (srvbuild).

Podczas instalacji Job Schedulera dostawałem komunikat o błędzie:

jst_svr_update_statistics: 100% complete.
Installing SybBackupDbToDiskTemplate.xml in the SAP Adaptive Server
Enterprise...
Task failed
 ----------------------------------------------------------------
                  W E L C O M E   T O
   TemplateImport Utility [version 1.11]    Mar 9, 2016 8:11:51 PM
     Runtime Switches:
     TemplateImport Properties:
                Server_Machine_Name: localhost
                       Server_Name: SAP1
                       Server_Port: 5000
     Template_Description_Override: Dumps specified database(s).
      Template_Group_Path_Override: Backups
                 Template_Language: en
            Template_Name_Override: Backup Database to Disk Template
         Template_Version_Override: 3.1
                 Template_XML_File: /opt/sap/ASE-16_0/jobscheduler/Templates/xml/en/SybBackupDbToDiskTemplate.xml
----------------------------------------------------------------
Reading XML File: /opt/sap/ASE-16_0/jobscheduler/Templates/xml/en/SybBackupDbToDiskTemplate.xml
XML File Read Completed Successfully
Creating Initial Template Record
SQLException: JZ006: Caught IOException: java.net.ConnectException: Connection refused 
(port 5000 to address ::ffff:127.0.0.1 (localhost))
SQLException during getConnection: java.sql.SQLException: JZ006: Caught IOException: java.net.ConnectException: 
Connection refused (port 5000 to address ::ffff:127.0.0.1 (localhost))
Exception  : SQLException when trying to connect.



Rozwiązaniem okazało się wyłączenie protokołu IPv6:
Błąd „connection refused” jest o tyle dziwny, że ASE Server już działał i było można się do niego podłączyć. Skoro więc zewnętrzni klienci potrafią się podłączyć do ASE, to dlaczego proces instalatora ma z tym problem? Bo to Sybase… bez problemów nie byłoby zabawy…

W Fedora Core 23 można to zrobić komendą sysctl. Aby wyłączenie ipv6 było „na zawsze” lepiej umieścić wpis w pliku konfiguracyjnym. Takim plikiem konfiguracyjnym dla sysctl w FC23 jest każdy plik znajdujący się w ścieżce /etc/sysctl.d

Wystarczy tam umieścić plik np. disable_ipv6.conf  o następującej zawartości:

net.ipv6.conf.all.disable_ipv6 = 1

I gotowe! Od tej pory, po restarcie Linuxa, protokół IPv6 będzie wyłączony. Jeżeli chcesz wymusić zmianę bez restartu skorzystaj z polecenia:

sysctl -w net.ipv6.conf.all.disable_ipv6=1

Dodaj komentarz:

Autor: Rafał Kraik