转自:https://blog.csdn.net/u011949148/article/details/54311288

昨天在阿里云上申请了一个云服务器,系统用的是ubuntu14.04,由于是免费的(初次使用),配置较低(单核1G内存,40G硬盘),所以在服务器上不方便安装图形界面(默认的系统镜像是没有桌面系统的,毕竟只是服务器),没有图形界面总觉得不是很方便,就想着用samba把远程目录挂载到本地来访问更方便一些,但是其中却遇到了不少问题,记录一下。

(1)我起初的操作

首先在用ssh远程登录到服务器(开始以root账户登录):

创建账户warren:

adduser warren

将warren添加为sudoers:

vim /etc/sudoers

在root    ALL=(ALL:ALL) ALL下面一行添加:

warren  ALL=(ALL:ALL) ALL

保存并退出,则warren账户有了sudo的权限

su warren

sudo apt-get update

sudo apt-get install samba

sudo vim /etc/samba/smb.conf

配置自己的共享目录

[warren]
   comment = warren
   path = /home/warren
   browseable = yes
   read only = yes
   guest ok = no

这样配置好了,执行:

sudo smbpasswd -a warren

输入密码将warren加入samba账户,用于安全登录

sudo service smdb restart

这样samba服务器基本配置完成,本以为大功告成了,谁知道后面却遇到了一大堆问题。

(2)遇到的问题

1.windows下无法挂载

在本地的windows(win7)上试着链接:

打开任何一个文件夹,在地址栏输入

\\公网ip地址\共享目录,却是死活连不上,

以为是本地防火墙的原因,试着打开了防火墙中关于smb服务的规则,仍然不行

后来有看了网上说开启什么Serser,workstation等服务,还是不行。

后来我开始怀疑是服务器端的配置有问题,为了确定是服务器问题还是客户端问题,我就试着在本地Ubuntu下挂载。

2.Ubuntu下无法挂载

试着挂载命令:
sudo mount -t cifs //公网ip地址/共享目录 /本地挂载目录 -o username=warren,passwd=前面设置的密码
(注意共享目录是warren,而不是路径/home/warren)
结果:
mount error(115): Operation now in progress
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
为了查找原因我决定深入了解一下samba
samba使用了两个服务:
(1)nmbd:端口号137/UDP(Netbios Name Service),138/UDP(Netbios Datagram Service)
(2)smbd:端口号139/TCP(Netbios Session service),445/TCP(Microsoft Naked CIFS)
首先确定服务器上的端口已经开启:
sudo service smbd stop
sudo netstat -ln > netstat-ln-smbd.before
sudo service smbd start
sudo netstat -ln > netstat-ln-smbd.after
diff netstat-ln-smbd.before netstat-ln-smbd.after
可以看到smbd的端口确实是开放的
为了确定服务器端口是正常的,在服务器上执行:
nc -z -w 1 公网ip地址 smbd端口号
发现是正常的,但是在本地Ubuntu上执行:
nc -z -w 1 公网ip地址 smbd端口号
却发现超时了,用wireshark抓包看到
看到tcp一直在链接请求,但是服务器却没有回应!可见smbd的两个端口都是不通的。试试nmbd的端口
nc -v -zu -w 2 公网ip 137
Connection to 112.126.80.71 137 port [udp/netbios-ns] succeeded!
nc -v -zu -w 2 公网ip 138
Connection to 112.126.80.71 138 port [udp/netbios-ns] succeeded!

可见nmbd服务是可以正常连通的。

后来又查了下,发现有人说可能是samba对网卡的绑定可能有问题,这里说一下,我申请的阿里云服务器有两块网卡eth0,eth1
其中eth0是云服务器的内网网卡,对应内网ip,而eth1是云服务器的外网网卡,对应外网ip,但是不知samba默认是所有网卡都监听还是只监听某些网卡,为了确保我修改了smb.conf文件,在interfaces的配置里添加了:
interfaces = eth0 eth1
重启了smbd服务在本地Ubuntu上仍然挂载不上!看来是路由出了问题!

(3)问题定位

确定了是路由问题,就要定位是哪一个环节出了问题,首先整个网络的框架应该是这样的:
可见双方要想通信,数据包至少要通过两层防火墙,还有 Internet与阿里云端的管控中心,其中有一个环节被限制都会导致通信失败。一般Internet是不会出问题的,问题应该出在防火墙与阿里云端上。

1.配置iptables

Ubuntu下的防火墙就是iptables了,在服务器端:
sudo iptables -A INPUT -p tcp -m multiport --dports 139,445 -j ACCEPT
sudo iptables -A INPUT -p udp -m multiport --dports 137,138 -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m multiport --sports 139,445 -j ACCEPT
sudo iptables -A OUTPUT -p udp -m multiport --sports 137,138 -j ACCEPT
而在客户端:(源端口与目的端口交换)
sudo iptables -A INPUT -p tcp -m multiport --sports 139,445 -j ACCEPT
sudo iptables -A INPUT -p udp -m multiport --sports 137,138 -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m multiport --dports 139,445 -j ACCEPT
sudo iptables -A OUTPUT -p udp -m multiport --dports 137,138 -j ACCEPT

这样双方的防火墙就都已经开放了端口,但是在本地挂载仍是挂载不上,还是TCP链接不上。

2.配置云服务器

在云服务器管理页面设置安全规则:

再次尝试在本地挂载,仍然如故。。。。。。看来应该是阿里云端做了端口限制。

后来打了客户电话咨询,他们说阿里云不会做限制,那就奇怪了,到底是哪里出了问题?突然想到要是能追踪tcp数据包就好了,traceroute可以追踪ip包的路径,但是却不能追踪tcp包,这里明显是端口被限制了,因此traceroute是一直通的,并不能查找问题,于是上网搜了一下可以追踪tcp包(端口)的工具,还真有,就是tcptraceroute,于是就用它试了一下结果发现追踪

tcptraceroute 公网ip地址 22 -n -q 1

22端口是ssh,肯定能通的,事实结果也是如此,但是试了smbd的端口445

tcptraceroute 公网ip地址 445 -n -q 1

结果从第一跳到第三十跳都不通,这样问题就确定了,这应该是我的上层路由器把端口封了,因此数据包第一跳就没通过!想想也应该是,我们是在学校的实验室内部,可能为了保密就把端口限制了!(后来让其他朋友试着挂载,结果他们却能连上,这也更加确定这一点了)

(4)解决办法

1.Ubuntu

既然封了端口,那就只能更换端口了。打开smb.conf,在[global]section中添加:
smb ports = 1315 1314
注意点1.确定指定的两个端口未被使用,2.前面的端口号要大于后面的端口号,我之前试的把小的写前面发现没有生效,用的还是默认的端口。
用前面的方法确认打开的是否是指定的端口。
sudo mount -t cifs //公网ip地址/warren 本地目录 -o username=warren,passwd=密码,port=1315
终于挂载上了。

2.win7

网上搜索了一下,还没找到win7直接访问非标准samba共享的办法,但是有一个思路就是在本地做端口转发,像我这种情况只能在本地将445端口直接转发至1315,具体好像netsh命令可以,但是没有仔细研究,现在做论文忙死了,等以后有时间了好好研究一下。

(5)遗留问题

1.在smb.conf中指定了smbd的两个端口1315 1314,在命令行中只是指定了1315端口,那1314端口号客户端是如何知道的?
虽然折腾了这多久,结果还是自己这边的问题,但或多或少还是学到了点东西,不虚此行。

解决阿里云无法正常使用samba的问题【转】相关推荐

  1. 解决阿里云OSS跨域问题

    解决阿里云OSS跨域问题 现象 本人项目中对阿里云图片请求进行了两次,第一次通过img标签进行,第二次通过异步加载获取.第一次请求到图片,浏览器会进行缓存,随后再进行异步请求,保存跨域失效. 错误信息 ...

  2. 解决阿里云主机受到攻击的问题 2

    解决阿里云主机受到攻击的问题 详细解决方案 在/etc/profile 文件中添加: sed -i 's/^\([^#].*scrypt\)/# \1/' /etc/rc.local sed -i ' ...

  3. 解决阿里云服务器被恶意挖矿问题

    解决阿里云服务器被恶意挖矿问题 一.出现问题现象以及原因 二.解决方法 一.出现问题现象以及原因 出现现象:阿里云控制台出现高危应急漏洞,其次CPU和内存都打满:经过问题详情的查看, 发现攻击者是在e ...

  4. 解决阿里云盘分享文件数量太多而无法分享的问题

    问题描述: 如图 解决办法: 第一步:新建一个空白文件夹并复制新建空白文件夹的分享链接 第二步:把你要分享的资料全部移动到这个文件夹里 第三步:粘贴新建空白文件夹分享链接去分享 参考:两分钟解决阿里云 ...

  5. 【解决阿里云服务器提示挖矿程序风险2022】

    解决阿里云服务器提示挖矿程序风险2022-10 搜索删除含system-private相关的所有文件 如图:system-private.... 2.清除定时任务 3.修改文件可执行权限 4.清除路由 ...

  6. 5分钟解决阿里云oss对象存储

    5分钟解决阿里云OSS对象存储 后附关键代码 启动代码如下: pom.xml里添加依赖 com.aliyun.oss aliyun-sdk-oss 2.8.3 1.建类AliyunOSSClientU ...

  7. 解决阿里云RDS mysql5.7数据库不能存储微信昵称含特殊表情或字符的问题

    解决阿里云RDS mysql5.7数据库不能存储微信昵称含特殊表情或字符的问题 1.数据库和表的字符集类型设置为utf8mb4: 2.字段字符集设置为utf8mb4. 3.进入阿里云数据库实例管理页面 ...

  8. 解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题

    解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题 问题描述 java程序,使用阿里云oss文件上传服务,在测试时偶然发现,我用苹果手机开启高清进行摄像,将原图通过qq传到电脑上,在电 ...

  9. 解决阿里云CentOS8 yum安装appstream报错,更新yum后无法makecache的问题

    问题 CentOS 8 yum安装软件时,提示无法从appstream下载 [root@iZwz99xeomvq1omj9cu7tuZ yum.repos.d]# yum -y install epe ...

最新文章

  1. Rancher 推出 k3OS,业界首个 Kubernetes 操作系统
  2. QT:KeepAliveOption的应用
  3. Xamarin提示Build-tools版本过老
  4. 解决apt-get /var/lib/dpkg/lock-frontend 问题
  5. python模糊查询_python实现字符串模糊匹配
  6. SQL Servr 2008空间数据应用系列三:SQL Server 2008空间数据类型
  7. LightOJ1298 One Theorem, One Year(DP + 欧拉函数性质)
  8. 我是如何帮助创业公司改进企业工作的
  9. 柯桥在PPT中如何制作翻书动画?
  10. dnf服务器未响应怎么解决方法,DNF地下城与勇士程序未响应怎么办——一招搞定...
  11. 编写程序,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值,其中n由键盘输入。
  12. 动态规划解决TSP(旅行推销员问题)
  13. Mac的谷歌浏览器安装Vue.js.devtools插件
  14. Javase day06_汇总
  15. 向量的外积(outer product)与克罗内克积(Kronecker)
  16. Cocoa Touch Layer
  17. LeetCode 276:栅栏涂色
  18. Android官方SDK下载(含API文档)
  19. 浅谈金融行业自动化运维
  20. Mat 读取数据 及效率对比

热门文章

  1. 二维码QR Code简介及其解码实现(zxing-cpp)
  2. 【Qt】Qt再学习(十四):QGraphicsView
  3. 字符串json怎么把双引号去掉_Java Json字符串的双引号("")括号如何去掉
  4. Java项目:网上电商项目(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  5. 云职教课堂计算机文化基础,2020智慧职教云课堂计算机文化基础答案最新最全单元测试答案...
  6. java servlet applet,详解Java Servlet与Applet比较
  7. 实验4  数据的安全性管理
  8. Android 数据存储-内外部存储测试
  9. uniapp设置模板路径页面样式混乱解决办法
  10. 微信小程序之录音与播放功能(完整示例demo)