通过不同的 WiFi 接入点设置静态 IP 地址

通过不同的 WiFi 接入点设置静态 IP 地址

我正在设置一台无头 PC,以便仅可使用 ssh(通过 wifi)访问它,它有 LMDE5(基于 Debian 的 Linux Mint 版本)。

一方面,设置静态 IP 地址将使我能够从家中的任何其他 PC 连接到该 PC,甚至可以从我的智能手机(通过 termux)连接到该 PC。另一方面,由于我使用不同的手机作为家庭 LAN 的接入点,因此我无法为 PC 配置静态 IP,因为这也会带来固定网关/主 DNS(将是手机),而这将因我将使用的手机而异。

(wifi 接口 wlp5s0 已设置为使用适当的密钥连接到任何手机 SSID)

我看到 Android 热点设置为 192.168.43.x 这样的子网,我希望我的新电脑有地址 192.168.43.201

现在,我找到的解决方案是在建立连接后更改 IPv4,因此我让 dhcp 完成其工作,然后更改地址。为了实现这一点,我在 /etc/if-up.d/ 中编写了以下简单脚本:

#!/bin/sh

[ "$IFACE" == "wlp5s0" ] || exit 0

ifconfig wlp5s0 192.168.43.201/24

它总是会设置正确的 IPv4 地址(在网络连接建立后),但整个过程并不总是有效 - 它只在手机将其自己的网关地址设置为 192.168.43.1 时才有效(然后我可以检查 repo 以获取更新,“ping 192.168.43.201”可从其他 PC 运行,并且 ssh 连接)其他情况将不起作用(无互联网访问)。有效情况显示“ip route show”的输出,否则该命令什么也不给出。

我错过了什么?

答案1

写下我的解决方案,因为它可能对其他人有用。

我无法完全控制我的网络设置,直到我意识到谁真正负责任何与网络相关的设置,那就是 NetworkManager。我切换到 nmcli 以更改 IPv4 地址,仅此而已。我的脚本变成:

#!/bin/sh

if [ "$IFACE" != "wlp5s0" ]
then
    exit 0
fi

nmcli device modify wlp5s0 ipv4.addresses 192.168.43.201/24

并且修改确实 100% 有效(无需担心网关)。

请注意:nmcli没有改变当前地址,而是添加新地址到同一个网络接口。事实上:

$ nmcli
wlp5s0: collegato to ***my_network***
        "Intel 6 AX200"
        wifi (iwlwifi), ***my_mac_address***, hw, mtu 1500
        predefinito ip4
        inet4 192.168.43.201/24
        inet4 192.168.43.237/24
        route4 0.0.0.0/0
        route4 192.168.43.0/24
        route4 192.168.43.0/24
        inet6 fe80::32fe:afc2:a611:527e/64
        route6 fe80::/64
        route6 ff00::/8

其中两个 IPv4 地址用于同一个无线接口(并且它们都有效)。

相关内容