gpt4 book ai didi

java - 如何在 Linux 中设置规范的主机名?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:18 26 4
gpt4 key购买 nike

问题:如何“设置”Java 的 InetAddress.getCanonicalHostname() 方法报告的规范主机名?

上下文:我正在尝试在 CentOS 5.6 上运行 Neo4j(它有一个嵌入式 jetty 服务器)。该服务启动得很好,但它绑定(bind)到错误的地址 (IPv6),netstat 证明了这一点。我需要它绑定(bind)到 0.0.0.0 (IPv4) 而不是 :::*

有没有我可以用来强制 getCanoncialHostname() 返回我想要的字符串的 JVM 参数?如果没有,我可以在我的 hosts 文件或其他 linux 配置文件中添加什么来实现相同的目的?

[编辑 - 添加 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 进入机器,所以有证据表明 :::* 外部地址(原则上)很好。

[编辑 - 添加了远程 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)

最佳答案

您可以通过以下网络属性告诉您的 JVM 使用 IPv4 而不是 IPv6:-Djava.net.preferIPv4Stack=true

参见 Networking properties

关于java - 如何在 Linux 中设置规范的主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com