我正在设置一台无头 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 地址用于同一个无线接口(并且它们都有效)。