背景
大家好,我正在使用旧机器等以 0 美元的预算开展一项动物福利计划,所以如果你能提供帮助,你会得到狗狗们的热情亲吻以表感谢(我们的组织叫做“狗友好协会”)...我们是非常草根的,并且正在建立一个网站并运行,所以我正在尝试建立我们的内部网络以用于各种目的,包括协作、开发和其他实验...这既是为了动物福利团体,也是为了相关的商业项目,希望这些项目能够产生支持该团体的愿景和活动所需的资金...所以任何帮助都将不胜感激。
我想要做的是首先让 samba 在有密码和无密码的 Windows 工作组中工作...然后让它在域中工作,一旦一些虚拟机(Windows 服务器 - 在两台 Linux 机器上运行)启动并运行。
问题
- Win7 机器可以在工作组中看到 Ubuntu 机器并访问其共享(用户通过 samba 进行身份验证)
- 其他 Win7 计算机可以看到第一个(反之亦然),并且它们都可以访问彼此的共享
- 然而,Ubuntu 机器可以在 WORKGROUP 中看到自己,可以在 WORKGROUP 中看到第二台 win7 机器
- 但是 ubuntu 无法看到第一台 win7 机器,它被设置为共享给谁
环境目标
- 不知道这是否相关,但如果有帮助的话
- 2 台 win7 笔记本电脑(如果可能的话,保留在简单的 windows 工作组/家庭组中)
- 1 台旧电脑将成为裸机 Ubuntu 打印机和(可能的)扫描仪服务器
- 另外 2 台计算机设置为 ubuntu 服务器,托管 Windows 服务器机器的虚拟机(使用 VMWare Player)和 samba 文件共享(一些文件共享用于 Windows 工作组,而其他共享用于 Linux 开发/实验、MS SQL 服务器和尚未设置域中的 Sharepoint 服务器)
- 因此,一个 ubuntu 服务器将托管一个 win 服务器 Active Directory 域服务/域控制器虚拟机,另一个将托管一个 win 服务器 SQL 和 Sharepoint 服务器虚拟机
- 底层 ubuntu 服务器需要为工作组提供一些逻辑卷共享,并为 SQL 服务器提供 Sharepoint 数据库使用其他逻辑卷共享
请注意
- 我并不是在寻求有关 Windows Server 方面的帮助,我在其他地方得到了这方面的帮助...只是想让 Ubuntu 做好准备,并想抢先回答任何关于我为什么这样做的问题,因此建议另一种方式,只是认为这些背景信息可以帮助你理解我的最终目标,也许有助于更好地回答这个问题——谢谢 :-)
- 我正在使用由房东支持的子网,因为我们还负担不起自己的互联网连接预算……所以我还不能进行端口转发等……这一切都只是为了在我们有预算时做好准备,从而实现我们的最终目标
以下是目前的情况(在 3 台 Linux 机器中的第一台上):
Ubuntu 设置
- 我设置了 Ubuntu 13.04 服务器 x64
- 执行了 sudo apt-get update & upgrade
- 安装了 ubuntu-desktop(因为我是命令行管理的新手)
- 安装了所需的软件包:samba 和 system-config-samba(UI)
- 为 Samba 共享创建卷组和逻辑卷
- 将其挂载到 /shares/share-u64(这样名称可以帮助我识别它与其他可能的共享)
- 修改 fstab 以自动挂载该共享位置(成功)
- 修改 /etc/NetworkManager/NetworkManager.conf > managed=true
- 修改 /etc/network/interfaces > 注释掉:auto eth0 & iface eth0 inet dhcp
- 创建了我自己的具有静态 IP 地址的网络连接,主 DNS 设置为即将创建的 DNS 虚拟机(也用于所述的活动目录/域控制器),辅助 DNS 设置为我们子网的路由器/网络扩展器
- 已修改 /etc/default/avahi-daemon > AVAHI_DAEMON_DETECT_LOCAL=0
主机文件准备
- 将上述我想在此服务器上设置的 Windows 服务器虚拟机和另一台 ubuntu 服务器上的虚拟机信息添加到 /etc/hosts 文件中(尽管虚拟机尚未创建),包括每个虚拟机的 FQDN 和别名(以及我打算为每台机器设置的静态 IP 地址) > 格式:IP 地址 计算机名称.域名 Alias_1 ... Alias_n
- 还为即将创建的第二台 ubuntu 服务器添加了 IP 地址、FQDN 和别名
- 我认为提前将这些信息添加到 hosts 文件中(在这些虚拟机和其他 ubuntu 服务器准备好之前)没什么关系,因为如果这些机器尚不存在,它只会忽略它或使对这些机器的任何调用超时
- 后来在 hosts 文件中添加了 win7 机器的条目(我在 windows 工作组中无法从 ubuntu 看到该机器),行格式为:192.168.1.x 计算机名称(但不包括其 FQDN,因为尚未设置域控制器) - 试图解决无法从工作组中的 ubuntu 看到该机器的问题(此解决方案似乎没有效果)
SAMBA 配置
- 配置 /etc/samba/smb.conf 文件(通过 GUI 和命令行 - 仔细检查和添加 GUI 不允许的内容),格式如下:
全球的
- 工作组 =
- netbios 名称 =
- 仅限用户共享所有者 = false
- 服务器字符串 = %h 服务器(Samba,Ubuntu)
- 赢得支持 = 是
- 名称解析顺序 = wins lmhosts hosts bcast
- dns 代理 = 无
- 安全 = 用户
- 遵守 pam 限制 = 是
- 无效用户 = root
- passwd 程序 = /etc/bin/passwd %u
- 密码聊天 =输入\snew\sUNIX\s密码:%n\n blah blah blah(我觉得你不需要知道这一行的其余部分)
- 用户名映射 = /etc/samba/smbusers
共享-u64
- 路径 = /shares/share-u64
- 可写 = 是
- 可浏览 = 是
- 有效用户 = trevor(并且此用户已设置并映射到 win7 用户名)
我注意到没有 lmhosts 文件存在(我尝试使用 sudolocate 查找它,但它只在手册页中,而没有实际的工作文件),所以我运行了一个我找到的命令行指令(抱歉,不幸的是没有记下来),它显然告诉 nmbd 服务在哪里寻找 lmhosts 文件或在其使用的文件中添加一个新的 lmhosts 文件(?)...然后在该位置创建一个 lmhosts 文件,其条目格式为:-192.168.1.X NETBIOS_NAME
...对于我看不到的机器...然后尝试重新启动 nmbd 服务并重新启动整个机器(和 win7 机器)...但无济于事
尝试过的其他方法
- 发现一个论坛建议更改 win7 本地安全策略:网络安全:LAN 管理器身份验证级别,并禁用所需的 128 位加密...但这些都不能使我的 win7 机器对 ubuntu 机器可见,而且我怀疑它们并不是让 samba 共享运行的原因,因为我看过很多关于 samba 的教程,从来没有提到过也不需要这个步骤
最后
- 我也尝试过其他的事情,但忘记了那些事情是什么(抱歉,在我开始这个 ubuntu 和 samba 东西之前,我已经连续几天没睡觉处理硬件问题和 Windows 服务器准备工作了……但无论如何,这就是它的主要内容,还有许多其他我可能忘记提及的事情,希望它们与我所做的 sudo remove & purge 无关
- 我尝试为此添加“可见性”标签,我认为这会有所帮助...但据说我需要 300 点声誉才能添加新标签...因此,如果有 300+ 点的人阅读了此内容,并且您同意这是一个很好的标签,那么也许可以添加它(其他人可以向我的帖子添加标签吗?)
谢谢
- 在此先感谢您的帮助 :-)
更新 - Windows 网络设置
受影响的 win7 机器上的 ipconfig(可能相关的行):
Windows IP 配置:
- 主 DNS 后缀 = 空白
- 节点类型 = 混合
- IP 路由已启用 = 否
- WINS 代理已启用 = 否
LAN 适配器网络连接:
- DHCP 已启用 = 否
- 自动配置已启用 = 是
- DNS 服务器 = 尚不存在的 Windows 服务器的 IP 地址,该服务器将作为 AD DS/域控制器和 DNS;辅助 DNS 设置为 192.168.1.1(路由器)
- 主 WINS 服务器 = 192.168.1.30(我无法从该 Ubuntu 机器上看到它的地址)
- 辅助 WINS 服务器 = 尚未创建的 VM 和第二台 Ubuntu 计算机(也尚未创建)的 IP 地址
- Tcpip 上的 NetBIOS = 已启用
...所以我看不出有什么问题,与其他 win7 机器唯一的区别是:
- 它只有 1 个 DNS 服务器(路由器)
- 没有设置 WINS 服务器
gvfsd 网络崩溃
- 如果有帮助的话,只是想补充一下信息……重新启动并尝试访问 Windows 工作组后,gvfsd 网络崩溃了
- 在我遵循另一条建议并重新启动两台机器后...当我登录并尝试通过文件查看器 UI 查看 Windows 网络时,同一服务再次崩溃...显然那里出了问题
WINDOWS 家庭组更新
- 只是出于好奇,将我的 Windows 家庭组留在了那台 Win7 机器上,但无法创建新的家庭组(显示错误消息):“Windows 无法在此计算机上设置家庭组”......这可能与这个问题有关,也可能无关(?)
访问工作组-可见 WIN7 机器错误
- 当我尝试实际访问第二台 win7 计算机上的公共共享时(我可以从工作组中的 Ubuntu 看到)(通过文件查看器 UI),首先会出现一个消息窗口,内容为:
“正在打开 COMPURER-NAME:您可以通过单击“取消”来停止此操作”
...最终我收到一条错误消息:
“无法访问位置:无法从服务器检索共享列表:连接超时”
- 所以也许这表明 hosts 文件中的某些内容使 Samba/Ubuntu 感到困惑(对于不存在的主机)... 我将尝试注释掉这些行以查看它在重启后如何响应(并使用另一个点来报告此更新)
- 结果:在 /etc/hosts 文件中注释掉尚未创建的服务器没有任何作用
WINDOWS 注册表更改 - 由 Samba.org 论坛帖子建议
- 不幸的是,针对 win7 建议的 Samba.org 注册表更改如下:
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\参数]
DWORD DomainCompatibilityMode 1 DWORD DNSNameResolutionRequired 0
...也没有解决问题
nmap 192.168.1.*-没有显示 win7 机器
- 但是可以 ping 到 win7 机器的 netbios/计算机名称和 IP 地址
- 可能的结论是 win7 上的网络适配设置存在干扰(虽然这不能解释无法在其他可见的 win7 机器上看到 win7 共享)
- 再次检查两台 win7 机器的共享设置,看看是否有任何突出的问题,并将从存在可见性的 win7 机器中删除 WINS 服务器设置
删除不存在的主机条目和 Windows 网络故障排除
从上次更新(nmap 命令)开始,当我从适配的设置中删除其他条目(例如尚未存在的主 DNS 服务器,仅保留路由器,并删除 WINS 条目)时,然后按照此处的说明进行操作:
http://windows.microsoft.com/en-au/windows7/why-cant-i-create-a-homegroup
- http://answers.microsoft.com/en-us/windows/forum/windows_7-networking/cant-create-a-homegroup-on-my-windows-7-computer/ca1ed02c-6557-41f8-a37d-5d4f98861266
...然后重新启动,我终于可以在 Windows 网络 > 工作组中从 Ubuntu 看到我的 Win7 机器,尽管仍然不在这两个(在文件查看器 UI 中)“浏览网络”的父区域中(尽管路由器/网关和其他 Win7 机器都出现在这里)。
- 然而,我仍然无法访问上面的文件……尽管至少离目标更近了一步
答案1
问题解决了
在这里找到了最后一部分的解决方案:
先前的更改使我能够看到我的 Win7 机器(但仍然无法访问它)并带来了一条新的错误消息:
“无法从服务器检索共享列表”
...这让我找到了那个链接,对 /etc/samba/smb.conf 文件进行微小更改(将 bcast 放在第一位)解决了这个问题,并解决了两台 win7 机器的问题,所以我现在不仅可以看到它们两个,还可以浏览它们的共享
学过的知识
所以很明显,我在这里学到的教训是,我不能跳过这一步,实现最终目标的过程需要一些时间,而且我必须确保这些虚拟机确实存在,然后才能在任何地方引用它们
感谢那些试图提供帮助的人