Ubuntu Java網絡配置指南
在Ubuntu系統中配置Java網絡,主要分為系統網絡基礎配置和Java應用網絡參數設置兩部分。系統網絡配置確保Ubuntu能正常聯網,而Java網絡參數則針對Java應用的網絡行為(如代理、超時)進行調整。
系統網絡是Java應用運行的基礎,需先確保Ubuntu能正常訪問網絡。以下是命令行配置靜態IP(推薦用于服務器)和無線連接的步驟:
編輯Netplan配置文件(Ubuntu 18.04及以上版本使用Netplan管理網絡):
sudo nano /etc/netplan/01-netcfg.yaml
將文件內容修改為(根據實際情況替換IP、網關、DNS):
network:
version: 2
renderer: networkd
ethernets:
enp0s3: # 網卡名稱(可通過`ip addr show`查看)
dhcp4: no # 關閉DHCP
addresses: ["192.168.1.100/24"] # 靜態IP地址及子網掩碼
gateway4: "192.168.1.1" # 網關地址
nameservers:
addresses: ["8.8.8.8", "8.8.4.4"] # DNS服務器
保存文件(Ctrl+O
→Enter
→Ctrl+X
),應用配置:
sudo netplan apply
驗證網絡連通性:
ip addr show enp0s3 # 檢查IP是否生效
ping google.com # 測試網絡連通性
查看可用WiFi:
sudo nmcli dev wifi
連接WiFi(替換wifi_name
和wifi_passwd
):
sudo nmcli dev wifi connect "wifi_name" password "wifi_passwd" ifname wlan0
驗證連接狀態:
nmcli device status # 查看WiFi是否連接
Ubuntu默認使用ufw
防火墻,需允許Java應用訪問網絡(如HTTP/HTTPS):
sudo ufw allow out to any port 80 # 允許HTTP
sudo ufw allow out to any port 443 # 允許HTTPS
sudo ufw enable # 啟用防火墻(若未啟用)
Java應用的網絡行為(如代理、超時)需通過系統屬性設置,以下是常見配置方式:
啟動Java應用時,添加以下參數:
java -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 \ # HTTP代理
-Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=8080 \ # HTTPS代理
-Dsun.net.client.defaultConnectTimeout=5000 \ # 連接超時(毫秒)
-Dsun.net.client.defaultReadTimeout=5000 \ # 讀取超時(毫秒)
-jar your-application.jar
若代理需要認證,添加用戶名和密碼:
-Dhttp.proxyUser=username -Dhttp.proxyPassword=password \
-Dhttps.proxyUser=username -Dhttps.proxyPassword=password \
在終端中設置環境變量(臨時生效,重啟終端失效):
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1,*.example.com" # 不走代理的主機
export JAVA_OPTS="-Dsun.net.client.defaultConnectTimeout=5000 -Dsun.net.client.defaultReadTimeout=5000"
啟動Java應用時加載環境變量:
java $JAVA_OPTS -jar your-application.jar
若需硬編碼網絡參數,可在Java代碼中使用System.setProperty
:
public class NetworkConfig {
public static void main(String[] args) {
System.setProperty("http.proxyHost", "proxy.example.com");
System.setProperty("http.proxyPort", "8080");
System.setProperty("https.proxyHost", "proxy.example.com");
System.setProperty("https.proxyPort", "8080");
System.setProperty("sun.net.client.defaultConnectTimeout", "5000");
System.setProperty("sun.net.client.defaultReadTimeout", "5000");
// 測試網絡連接
try {
InetAddress address = InetAddress.getByName("www.google.com");
System.out.println("Connection successful!");
} catch (UnknownHostException e) {
System.err.println("Connection failed: " + e.getMessage());
}
}
}
無法連接網絡:
ip addr show
確認IP是否正確)。ping google.com
)。sudo ufw status
)。Java應用無法訪問代理:
proxy.example.com
是否可達)。連接超時:
sun.net.client.defaultConnectTimeout
和sun.net.client.defaultReadTimeout
的值(如從5000ms調整為10000ms)。通過以上步驟,可完成Ubuntu系統下Java網絡的基本配置。根據實際需求(如動態IP、代理認證),調整相應參數即可。