温馨提示×

Java在CentOS上的网络配置方法

小樊
39
2025-11-19 20:12:54
栏目: 编程语言

Java在CentOS上的网络配置方法

一 系统网络与防火墙配置

  • 查看网卡与地址
    • 查看接口名与IP:ip addr(常见接口名如 eth0ens33
  • 配置静态IP(传统 ifcfg 文件)
    • 编辑配置文件:/etc/sysconfig/network-scripts/ifcfg-<接口名>
    • 示例内容:
      DEVICE=ens33
      BOOTPROTO=static
      ONBOOT=yes
      IPADDR=192.168.1.100
      NETMASK=255.255.255.0
      GATEWAY=192.168.1.1
      DNS1=8.8.8.8
      DNS2=8.8.4.4
      
    • 使配置生效:sudo systemctl restart network
  • 配置静态IP(NetworkManager nmcli)
    • 查看连接:nmcli con show
    • 修改连接(以 ens33 为例):
      sudo nmcli con mod ens33 ipv4.addresses 192.168.1.100/24
      sudo nmcli con mod ens33 ipv4.gateway 192.168.1.1
      sudo nmcli con mod ens33 ipv4.dns "8.8.8.8 8.8.4.4"
      sudo nmcli con mod ens33 ipv4.method manual
      sudo nmcli con down ens33 && sudo nmcli con up ens33
      
  • 配置DNS
    • 编辑:/etc/resolv.conf
      nameserver 8.8.8.8
      nameserver 8.8.4.4
      
  • 防火墙放行端口(以 firewalld 为例)
    • 放行应用端口(如 8080):
      sudo firewall-cmd --permanent --add-port=8080/tcp
      sudo firewall-cmd --reload
      
  • 连通性验证
    • 内网网关:ping 192.168.1.1
    • 外网域名:ping www.google.com
    • HTTP访问:curl http://www.google.com

二 JVM与Java应用的网络参数

  • 代理设置
    • HTTP/HTTPS代理:
      java -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 \
           -Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=8080 \
           -jar your-application.jar
      
    • 不使用代理的主机:
      -Dhttp.nonProxyHosts="localhost|127.0.0.1|*.example.com"
      
  • IPv4/IPv6与DNS缓存
    -Djava.net.preferIPv4Stack=true
    -Djava.net.preferIPv6Addresses=false
    -Dsun.net.inetaddr.ttl=60
    -Dsun.net.inetaddr.negative.ttl=10
    
  • 连接与读写超时
    -Dsun.net.client.defaultConnectTimeout=5000
    -Dsun.net.client.defaultReadTimeout=5000
    
  • HTTP Keep-Alive与连接池
    -Dhttp.keepAlive=true
    -Dhttp.maxConnections=100
    -Dhttp.connectionTimeout=5000
    
  • 说明
    • 上述为常见系统属性示例;如应用使用 Apache HttpClientOkHttpSpring WebClient 等框架,优先使用各框架自身的超时与连接池配置,以覆盖JVM层默认值。

三 系统级TCP/IP调优(可选)

  • 编辑:/etc/sysctl.conf,示例参数
    net.ipv4.ip_local_port_range = 1024 65535
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_rmem = 4096 87380 16777216
    net.ipv4.tcp_wmem = 4096 65536 16777216
    net.ipv4.tcp_fastopen = 3
    net.ipv4.tcp_sack = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_timestamps = 1
    
  • 应用生效:sysctl -p
  • 适用场景:高并发短连接、长肥管道(LFN)、需要调大端口范围与缓冲区时。

四 验证与排障

  • 端口监听与连接
    • 查看监听端口:ss -tulpen | grep 8080
    • 本机连通性:curl -I http://127.0.0.1:8080
    • 远端连通性(从外部):curl -I http://<服务器IP>:8080
  • 抓包与连接状态
    • 抓包:sudo tcpdump -i ens33 port 8080 -nn
    • 连接统计:ss -s
  • 常见问题
    • 接口名不一致:用 ip addr 确认实际接口名(如 ens33 而非 eth0
    • 配置未生效:检查是否使用了 NetworkManager 并采用 nmcli 正确应用;或重启网络服务
    • 防火墙阻断:确认已放行对应 TCP 端口并重载 firewalld
    • 代理不通:核对 http.proxyHost/Porthttp.nonProxyHosts 是否匹配目标地址。

0