作者/来源:新睿云小编 发布时间:2019-08-01
内联网是由组织创建的专用网络,用于简化通信和数据传输。通过连接全世界的多个网络来构建内联网以创建新的虚拟网络。连接到Intranet的用户可以访问某些内部网站或访问Intranet上的其他网络服务和内容。例如,如果员工出差想要访问办公室的网络,则可以通过内部的VPN配置来进行连接,则该员工将连接到位于办公室主网络上的VPN服务器。此VPN连接将在员工和办公室之间创建安全隧道。在网络上,员工的连接看起来好像是在本地连接到主网络而不是使用异地连接。
在本教程中,您将配置VPN的服务器,其仅适用于连接到VPN的客户端的服务,包括文件共享和网站,您将学习如何管理对这些资源的访问。完成后,您将拥有一个网络连接,即可轻松扩展以满足您的需求。
先决条件
要完成本教程,您需要以下内容:
一个新的Ubuntu 16.04服务器。
具有sudo权限的标准用户帐户。您可以按照初始服务器设置的步骤2和3以及Ubuntu 16.04教程设置标准帐户。
在您的服务器上安装并配置了OpenVPN。在继续之前,请完成如何在Ubuntu 16.04上设置OpenVPN服务器教程。我们假设VPN服务器位于VPN上的IP地址10.8.0.1,这是OpenVPN教程中使用的地址,您可以从本地计算机连接到VPN。
已注册的域名和访问权限以添加DNS条目。我们将example.com在本教程中使用,我们将使用DigitalOcean的DNS服务。要在您的域中使用DigitalOcean的DNS服务,请按照我们如何使用DigitalOcean设置主机名教程中的步骤1和2将您的域名指向DigitalOcean的名称服务器。
Apache安装了两个为您的域配置的虚拟主机。按照教程如何在Ubuntu 16.04设置Apache虚拟主机设置了两个虚拟主机名为example.com和,每个都有一个默认的HTML页面。intranet.example.com
步骤1 - 安装和配置Samba文件服务器
让我们首先设置Samba,以便我们的Intranet上的人可以共享文件。Samba与其他文件共享应用程序(如Dropbox)的不同之处在于它没有Web界面或任何存储限制。相反,Samba在服务器上共享目录和文件,因此您不必将数据上传到任何您无法控制的外部服务器。
我们将创建两个共享目录。我们的专用网络上的所有用户都可以访问第一个目录。第二个目录只能由我们指定的用户访问。我们将其命名为这些股份Allusers,并Restricted分别。
首先,使用以下命令安装Samba及其先决条件:
sudo apt-get install samba samba-common python-glade2 system-config-samba
接下来,备份Samba配置文件,以防我们稍后修改时出错。
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Samba还需要通过防火墙进行访问,因此为Samba流量添加规则:
sudo ufw allow samba
现在创建我们将共享的目录。首先,创建allusers目录:
sudo mkdir -p /samba/allusers
然后创建restricted目录:
sudo mkdir -p /samba/restricted
现在,让我们编辑Samba配置文件以设置服务并定义共享。打开Samba配置文件:
sudo nano /etc/samba/smb.conf
然后删除所有内容,因为我们将从头开始逐个编写我们自己的配置。
首先,我们为Samba服务器指定一些全局设置。将以下行添加到配置文件中:
/etc/samba/smb.conf中
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = ubuntu security = user map to guest = bad user dns proxy = no interfaces = 10.8.0.1/8 bind interfaces only = yes
让我们分解每个设置:
该workgroup设置指定服务器在客户端查询时将显示的工作组。默认组适用WORKGROUP于Windows,但如果您已经使用了工作组名称,则可以更改它。
在server string与netbios线分别指定Samba服务器和平台的名称。
该security设置指定这将是具有自己的用户帐户的独立文件服务器。该map to guest设置使用无效的用户名或密码将所有登录视为访客用户,并且该dns proxy设置告诉Samba不要尝试解析域名,因为我们没有为此Intranet运行我们自己的DNS。
通过该interfaces设置,我们指定我们仅使用VPN服务器的IP监听连接,而不是使用可公开访问的IP。该bind interface告诉Samba只听取我们的VPN发起的请求。
接下来,我们需要指定Samba的日志记录设置。将此配置块添加到文件的以下[global]部分:
/etc/samba/smb.conf中
[global] ... ## Logging log level = 2 log file = /var/log/samba.log.%m max log size = 50 debug timestamp = yes
该log level设置确定日志文件中所需的详细程度。这些级别从1到10,但我们将坚持2级,因为它是一个相对较轻的调试级别。该log file设置指定日志文件的文件路径和名称,并max log size限制日志文件的大小。该debug timestamp设置包括日志中的时间戳。
这会处理我们服务器的全局设置。现在让我们创建实际的共享定义。这些设置指定我们要共享的文件以及允许谁访问这些文件。
我们想要两股;一个叫Allusers,另一个叫Restricted。让我们Allusers先定义共享。对于此共享,用户可以浏览,写入和读取目录中的/samba/allusers文件。将此配置添加到文件中:
/etc/samba/smb.conf中
#============ Share Defenitions ================== [Allusers] path = /samba/allusers browsable = yes writable = yes guest ok = yes read only = no force user = nobody
该[Allusers]块表示后面的设置仅适用于Allusers共享。它还定义了用户将看到的共享的名称。该path设置指定我们要在Intranet上共享的文件夹的文件目录。设置browsable和writable以yes使用户可以在该文件夹中浏览,以及读取和写入文件的权限。
我们希望所有用户都能访问此共享,即使他们在服务器上没有用户帐户也是如此。请记住,在global我们指定map to guest设置的部分中,这意味着没有帐户或有效登录凭据的用户仍然可以访问作为访客共享的文件。我们允许那些客人通过设置访问此共享guest ok来yes,然后我们强制用户承担的身份nobody用force user = nobody。
该nobody用户组是任何Linux系统上已知的默认用户组。我们可以/samba/allusers为nobody用户设置文件夹的所需权限。然后,使用Samba,我们允许多个guest虚拟机使用该标识。这样我们就可以轻松管理访客用户对我们系统的访问。
有关nobody用户的更多信息,请访问Ubuntu wiki以及StackExchange上的此答案。
现在让我们创建Restricted文件共享,该共享只能由smbrestricted组成员访问:
/etc/samba/smb.conf中
[Restricted] path = /samba/restricted valid users = @smbrestricted guest ok = no writable = yes browsable = yes
我们再次开始指定要共享的目录并授予浏览和写入权限,就像我们对allusers共享一样。然后我们设置valid users = @smbrestricted,告诉Samba只允许该组的成员smbrestricted访问该共享。我们很快就会创建这个小组。
这样做是为了smb.conf文件。您的文件应如下所示:
/etc/samba/smb.conf中
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = ubuntu security = user map to guest = bad user dns proxy = no interfaces = 10.8.0.1/8 bind interfaces only = yes ## Logging log level = 2 log file = /var/log/samba.log.%m max log size = 50 debug timestamp = yes #============ Share Defenitions ================== [Allusers] path = /samba/allusers browsable = yes writable = yes guest ok = yes read only = no force user = nobody [Restricted] path = /samba/restricted valid users = @smbrestricted guest ok = no writable = yes browsable = yes
有了Samba配置,我们就可以创建smbrestricted组并创建我们的第一个用户。
第2步 - 配置对Samba共享的访问
要允许访问我们的共享,我们必须创建一个用户帐户并对我们计划共享的文件夹应用适当的权限。
首先,smbrestricted使用以下命令创建组:
sudo addgroup smbrestricted
现在在服务器上创建一个用户帐户并将其添加到该smbrestricted组。我们将创建一个帐户client1,该帐户与先决条件教程中创建的VPN连接的名称相匹配:
sudo useradd client1 -G smbrestricted
最后,我们需要为其分配Samba密码client1。通过我们设置的配置,Samba使用自己的凭证验证系统,该系统与普通Linux系统的验证系统分开。这很好,因为我们可以创建可以使用Samba访问文件共享的用户,而无需授予他们登录计算机本身的权限。
client1使用以下命令为用户创建Samba密码:
sudo smbpasswd -a client1
注意:如果您的系统上有用户也希望能够访问Samba共享,则还需要为这些用户创建Samba密码,因为登录系统与此配置是分开的。
接下来,我们为要共享的目录设置权限。首先,我们将设置allusers目录的权限:
sudo chmod -R 766 /samba/allusers
sudo chown -R nobody:nogroup /samba/allusers
这将授予目录的所有者完全权限,并且仅授予该组和其他所有人的读写权限。然后,我们将共享目录的所有者和组更改nobody:nogroup为该chown命令。
但是,将所有者和组更改为一个小问题nobody:nogroup。该chmod -R 766命令仅授予对/samba/allusers目录中当前和新文件/目录的读写权限,而不管是谁创建了这些文件或目录。这意味着,只要你尝试创建位于文件夹内的新文件中的/samba/allusers目录,你会得到一个权限不足的错误。请记住,当您在Allusers共享中工作时,您将承担其身份nobody,并且nobody权限非常有限。
为了解决这个问题,我们使用了访问控制列表或ACL。ACL规则允许我们自动将用户和/或组的权限分配给新创建的文件和目录。
/samba/allusers使用以下命令设置文件夹的ACL规则:
sudo setfacl -dm g:nogroup:rw /samba/allusers/
sudo setfacl -dm u:nobody:rw /samba/allusers/
该命令setfacl -dm表明我们正在为目录或文件定义新的权限规则,并且将来这些权限也应该应用于新创建的对象。g:nogroup:rw并且u:nobody:rw是新的ACL规则,授予nobody用户和组成员读写权限nogroup。
您可以从Ubuntu Wiki了解有关ACL的更多信息。
这照顾了客人的份额。现在我们可以为restricted目录设置权限:
sudo chmod -R 770 /samba/restricted
sudo chown root:smbrestricted /samba/restricted
这次我们完全阻止访问此目录,除了拥有者和smbrestricted组成员chmod 770。我们不需要设置ACL规则,因为权限在此共享文件夹中正常运行,因为我们使用的是经过身份验证的用户帐户。
现在我们已经配置了共享,重新启动Samba服务器,以便它使用新的配置文件:
sudo service smbd restart
我们现在可以连接到Samba服务器以上载或下载文件。
第3步 - 从客户端连接到Samba服务器
我们内部网的目标是在安全的环境中访问和共享文件,就像我们连接到主网络一样。当客户端连接到Samba时,它会将共享目录安装在该客户端的文件资源管理器中。我们来试试吧。
从Windows连接
要从Windows连接,请打开Windows资源管理器。在导航栏中,键入Samba服务器地址,//10.8.0.1然后Enter按键。
Windows可能需要一些时间才能连接。连接成功后,您将看到Intranet上托管的共享文件夹:
请注意,在快速访问工具栏的“网络”选项卡下创建了一个新的网络安装点。挂载点的名称与VPN的IP相同。10.8.0.1
您可以Allusers像访问任何其他文件夹一样访问共享,因为不需要凭据。只需双击该文件夹即可查看其内容:
要访问Restricted共享,请双击名为的文件夹Restricted。一个Windows安全弹出窗口将出现,说明网络凭据才能获得。
输入您创建的用户的用户名和密码,也可以选中该框以记住您的凭据。然后单击“确定”进行连接
连接后,您可以创建新文件或文件夹,甚至将文件夹拖到服务器上以上传它们。
从Ubuntu连接
要从Ubuntu连接,请打开文件资源管理器,然后选择左侧边栏中的“连接到服务器”选项。这将打开一个新屏幕,我们可以在其中输入服务器地址。
输入smb://10.8.0.1/并单击右下角的“连接”按钮。根据您的连接速度,PC可能需要几秒钟才能连接到服务器。连接后,将显示一个显示服务器上所有共享目录的屏幕:
要访问Allusers共享,只需双击该文件夹即可。将出现一个登录屏幕,询问用户名和密码。该Allusers股份不需要任何用户名和密码,所以你应该选择匿名的连接作为选项。单击Connect,它将为您打开共享目录。
请注意访问它们后如何在文件系统中装入这些共享目录。的Allusers份额被安装为网络驱动器沿着其他本地驱动器。
驱动器将保持安装状态,直到重新启动系统或卸载驱动器。
要访问Restricted共享,您需要有效的用户名和密码才能登录。双击Restricted共享
,将再次出现登录屏幕。对于“连接为”选项,选择“注册用户”并
在相应字段中填写用户名和密码,保留“域”选项。然后单击Connect,您将能够访问共享文件。
从Mac连接
要从Mac进行连接,请打开Finder,选择“转到”菜单,然后选择“连接到服务器...”。然后smb://10.8.0.1/用于服务器地址:
连接过程的其余部分与从Linux或Windows连接的过程相同。系统将提示您输入用户名和密码,并且可以查看并连接到可用的共享。
这样我们即可访问在新睿云的云服务器上搭建的文件服务器。