温馨提示×

Debian Rust如何配置网络

小樊
34
2025-12-24 21:32:12
栏目: 编程语言

Debian 上配置 Rust 的网络环境与代理

一、先让系统网络可用

  • 确认网卡名称:ip addr(常见如 eth0、ens18、enp0s3、wlan0)。
  • 使用 ifupdown 配置(传统方式):
    • DHCP:编辑 /etc/network/interfaces
      auto lo
      iface lo inet loopback
      
      auto eth0
      iface eth0 inet dhcp
      
    • 静态 IP:
      auto lo
      iface lo inet loopback
      
      auto eth0
      iface eth0 inet static
        address 192.168.1.100/24
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4
      
    • 使配置生效:systemctl restart networking 或 ifdown eth0 && ifup eth0。
  • 使用 NetworkManager(桌面/服务器常用):
    • 安装与启用:sudo apt-get update && sudo apt-get install -y network-manager && sudo systemctl enable --now NetworkManager
    • 命令行示例(按实际连接名修改):
      nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4" ipv4.method manual
      nmcli con up "Wired connection 1"
      
  • 无线(WPA/WPA2-PSK,配合 ifupdown 或 NM):
    • /etc/wpa_supplicant/wpa_supplicant.conf
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1
      country=CN
      network={
        ssid="你的SSID"
        psk="你的密码"
        key_mgmt=WPA-PSK
      }
      
    • 获取地址:sudo dhclient wlan0(ifupdown)或在 NM 中配置 Wi‑Fi 连接。
  • 验证:ip addr、ip route、ping -c 4 8.8.8.8、ping -c 4 debian.org。

二、让 Rust 程序走代理

  • 环境变量(最通用,影响大多数 HTTP 客户端与构建下载):
    • 临时:export http_proxy=http://代理:端口;export https_proxy=http://代理:端口
    • 永久:写入 ~/.bashrc 或 /etc/environment(对所有用户)。
  • Cargo 专用(仅影响 cargo 下载与 cargo run/test 中的构建过程):
    • 在项目根目录或全局创建/编辑 .cargo/config.toml
      [http]
      proxy = "http://代理:端口"
      
      [https]
      proxy = "http://代理:端口"
      
  • 注意:某些程序只识别小写 http_proxy/https_proxy,建议同时设置大小写。
  • 验证代理是否生效:cargo fetch 或运行示例程序观察是否通过代理访问外网。

三、常见网络库与最小示例

  • HTTP 客户端 reqwest + tokio(异步):
    • Cargo.toml
      [dependencies]
      reqwest = { version = "0.11", features = ["json"] }
      tokio = { version = "1", features = ["full"] }
      
    • src/main.rs
      use reqwest;
      use tokio;
      
      #[tokio::main]
      async fn main() -> Result<(), reqwest::Error> {
          let resp = reqwest::get("https://httpbin.org/get").await?;
          println!("status: {}", resp.status());
          Ok(())
      }
      
    • 运行:cargo run(若需代理,先按第二部分设置环境变量或 Cargo 代理)。
  • 其他常用库:hyper、tokio(网络、异步运行时),按需选择。

四、排错清单

  • 接口与地址:ip addr 看是否拿到 IP;ip route 看是否有 default 路由。
  • 连通性:ping -c 4 8.8.8.8(网络层),ping -c 4 debian.org(DNS 解析)。
  • DNS:cat /etc/resolv.conf 是否包含可用 nameserver;必要时在 interfaces 中用 dns-nameservers 指定。
  • 代理连通:curl -I https://httpbin.org/get 验证;若失败,检查代理地址、端口、认证与是否需要走系统代理。
  • Cargo 下载:cargo fetch -vv 查看是否走代理;必要时在 .cargo/config.toml 明确配置。
  • 无线:iwconfig/iw dev 查看无线状态;wpa_supplicant 配置是否正确、是否成功关联 AP。

0