CentOS 上 Java 网络设置实操指南
一 系统网络与防火墙先行
ip addr 或 ifconfig/etc/sysconfig/network-scripts/ifcfg-<接口名>(如 ifcfg-eth0/ens33),关键项:BOOTPROTO=static/dhcp、IPADDR、NETMASK、GATEWAY、DNS1/DNS2、ONBOOT=yessudo systemctl restart network 或 sudo ifdown <iface> && sudo ifup <iface>sudo firewall-cmd --zone=public --add-port=8080/tcp --permanentsudo firewall-cmd --reload/etc/resolv.conf 设置,例如:
nameserver 8.8.8.8、nameserver 8.8.4.4ip addr show <iface>、ping <网关或外网地址>、curl http://<目标地址>二 JVM 层网络参数设置
java -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=8080 -jar app.jar-Dhttp.nonProxyHosts="localhost|127.0.0.1|*.example.com"export http_proxy=http://proxy.example.com:8080、export https_proxy=https://proxy.example.com:8080-Dsun.net.client.defaultConnectTimeout=5000 -Dsun.net.client.defaultReadTimeout=5000-Dsun.net.inetaddr.ttl=60 -Dsun.net.inetaddr.negative.ttl=10-Djava.net.preferIPv4Stack=true-Djavax.net.ssl.trustStore=/path/to/truststore.jks -Djavax.net.ssl.trustStorePassword=密码-Djavax.net.ssl.keyStore=/path/to/keystore.jks -Djavax.net.ssl.keyStorePassword=密码java -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=8080 -Dsun.net.client.defaultConnectTimeout=5000 -Dsun.net.client.defaultReadTimeout=5000 -Djava.net.preferIPv4Stack=true -jar myapp.jar三 TCP IP 内核参数优化(可选)
/etc/sysctl.conf,示例:
net.ipv4.ip_local_port_range = 1024 65535net.core.rmem_max=16777216、net.core.wmem_max=16777216、net.ipv4.tcp_rmem=4096 87380 16777216、net.ipv4.tcp_wmem=4096 65536 16777216net.ipv4.tcp_fastopen=3、net.ipv4.tcp_sack=1、net.ipv4.tcp_window_scaling=1、net.ipv4.tcp_timestamps=1sysctl -p四 调试与排障命令
ss -tuln、netstat -tulntcpdump -i <iface> port 8080ping <目标IP或域名>、curl -v http://<目标地址>五 常见坑位与建议
http_proxy 默认不代理 localhost/127.0.0.1,需用 -Dhttp.nonProxyHosts 显式排除;某些协议(如 SOCKS)需应用或启动器显式支持。-Djava.net.preferIPv4Stack=true 规避解析到不可达的 IPv6 地址。setenforce 0 验证是否为策略问题(验证后请恢复为 enforcing)。/etc/resolv.conf 的 nameserver;按需设置 TTL/负缓存;容器内或 DHCP 场景注意 DNS 被覆盖。-Djavax.net.ssl.trustStorePassword 明文写在命令行,建议放入受控配置或密钥管理服务。