场景:通常,ubuntu 机器(称为服务器)在网络中运行并从中获取 IP。由于测试,有时 windows 机器(客户端)专门物理连接到 ubuntu 机器。(因为服务器安装在汽车拖车上,有时没有可用的网络。)
它应该无需在服务器上进行任何常规工作即可运行。
现在的情况:因为没有人运行 DHCP 服务器,所以两者都会获得一个 zeroconf (169.254.xx) 地址。问题是 Windows 不通过 mDNS 解析名称,否则我只需使用 avahi 即可。
我的解决方案如下:
- 服务器端
- DHCP 发现超时后,启动自己的 DHCP 服务器为客户端提供 IP
- 在 DHCP 发现超时时使用静态 IP(零配置子网)(这样客户端就知道了)
- 窗户边
- 分别安装 mDNS 或 Bonjour :(
- 双方
- 使用静态 IP(在客户端很麻烦,而且容易出错)
我是否考虑过各种解决方案?如果是,哪一个看起来最好?理想情况下,我不想在 Windows 上安装额外的软件,也不想一直在客户端上设置静态 IP。那么在服务器上设置静态零配置地址似乎是最好的选择吗?
答案1
尝试使用samba
包。您可能还需要安装libnss-windbind
。这应该可以启用WINS
作为名称服务。您需要添加wins
到hosts
中的条目 /etc/nsswitch.conf
。
我bonjour
在 Windows 系统上安装了该软件包,但找不到其地址。媒体服务已发布,但只有机器名称。
向 Windows 系统添加静态 IP 相当容易。使用 中的条目/etc/hosts
将使通过名称访问系统变得简单。这可以在两个系统上完成。如果您在192.168.255.0/24
、或 等网络中选择地址172.31.255.0/24
,则10.255.255.0/24
在连接到网络时地址冲突的风险应该很低。将地址添加为辅助地址应该允许地址在您获取零确认地址时正常工作。
答案2
为什么不在 Linux 服务器的生产子网中设置静态 IP 地址,并在同一个子网中的 Windows 计算机(启用 DHCP)上设置“备用配置”?这样,当 Windows 计算机上的 DHCP 失败时,它就不会以 169.254.xx 地址结束。
对于 DNS 问题,您可以像 @BillThor 提到的那样在 hosts 文件中对服务器名称/IP 进行硬编码,或者在 Linux 机器上运行 DNS。两者都比 WINS 更可取。
它是一种静态配置的设计,但为服务器提供了一致的寻址,并允许客户端在其他网络上使用 DHCP。