Как установить каноническое имя хоста в Linux? - PullRequest
1 голос
/ 02 июня 2011

Вопрос: Как «установить» каноническое имя хоста, как сообщается в методе java InetAddress.getCanonicalHostname()?

Контекст: я пытаюсь запустить Neo4j (у которого есть встроенный сервер Jetty) на CentOS 5.6.Служба запускается просто отлично, но она привязана к неправильному адресу (IPv6), о чем свидетельствует netstat.Вместо :::* мне нужно привязать его к 0.0.0.0 (IPv4).

Есть ли параметр JVM, который я могу использовать, чтобы заставить getCanoncialHostname() вернуть нужную строку?Если нет, что я могу добавить к моему hosts файлу или другому файлу конфигурации linux для достижения того же самого?

[edit - добавлен вывод netstat]

$ netstat -plten
...
Proto  Local Address    Foreign Address    State       User       Inode      PID/Program name
tcp    0.0.0.0:930      0.0.0.0:*          LISTEN      0          10240      -
tcp    0.0.0.0:139      0.0.0.0:*          LISTEN      0          57484      -
tcp    0.0.0.0:111      0.0.0.0:*          LISTEN      0          10104      -
tcp    127.0.0.1:25     0.0.0.0:*          LISTEN      0          12714      -
tcp    0.0.0.0:445      0.0.0.0:*          LISTEN      0          57483      -
tcp    :::7474          :::*               LISTEN      500        524965     28200/java
tcp    :::22            :::*               LISTEN      0          62967      -
tcp    :::1337          :::*               LISTEN      500        524953     28200/java
tcp    :::15003         :::*               LISTEN      500        481149     3926/java
tcp    :::60156         :::*               LISTEN      500        524951     28200/java
tcp    :::15004         :::*               LISTEN      500        524917     28177/java

Порт 22 - это ssh -Я могу просто войти в систему через ssh, так что есть доказательства того, что внешний адрес :::* (в принципе) очень хорош.

[edit - добавлен удаленный вывод nmap]

Запуск nmap издругой хост, специально перечисляющий все вышеперечисленное, производит это:

$ nmap -T4 -A -v -PE -PS22,25,80 -PA21,23,80,930,139,111,25,445,7474,22,1337,15003,60156,15004,3389 192.168.176.138
...
Initiating SYN Stealth Scan at 13:31
Scanning 192.168.176.138 [1000 ports]
Discovered open port 111/tcp on 192.168.176.138
Discovered open port 139/tcp on 192.168.176.138
Discovered open port 445/tcp on 192.168.176.138
Discovered open port 22/tcp on 192.168.176.138
Discovered open port 15003/tcp on 192.168.176.138
Discovered open port 15004/tcp on 192.168.176.138
Completed SYN Stealth Scan at 13:31, 0.04s elapsed (1000 total ports)

Ответы [ 3 ]

3 голосов
/ 02 июня 2011

Вы можете указать своей JVM использовать IPv4 вместо IPv6 с помощью следующего свойства сети: -Djava.net.preferIPv4Stack=true

См. Сетевые свойства

2 голосов
/ 02 июня 2011

Может быть, установка системного свойства -Djava.net.preferIPv4Stack=true поможет?

1 голос
/ 02 июня 2011

Вы должны указать, что Jetty прослушивает определенный интерфейс (ip), смотрите здесь: http://www.paralint.com/blog/2007/05/18/making-jetty-listen-to-the-local-interface-only/

строка: <Set name="Host"><SystemProperty name="jetty.host" default="localhost"/></Set> делает это

...