当前位置: 首页 > 编程日记 > 正文

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

转自: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端口号客户端是如何知道的?
虽然折腾了这多久,结果还是自己这边的问题,但或多或少还是学到了点东西,不虚此行。

相关文章:

Google又放大招:高效实时实现视频目标检测 | 技术头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑作者 | 陈泰红,算法工程师,研究方向为机器学习、图像处理来源 | 极市平台(ID:extrememart)图像目标检测是图像处理领域的基础。…

一个java删除文件夹的小方法

java删除文件夹都是从里向外删除,使用递归的方法。public class IO_FILEdemo09 {public static void main(String[] args) {// TODO Auto-generated method stub// 删除目录演示File dir new File("C:\\version1");DeleteAll(dir);}public static void D…

【C++】operator bool() 和 operator const bool() const

1、问题描述 在走读QtCreator源码时&#xff0c;看到如下运算符重载 源码在QtCreator-v4.9.2中 src\plugins\projectexplorer\projectexplorer.h class OpenProjectResult { public:OpenProjectResult(const QList<Project *> &projects, const QList<Project *…

tomcat高并发的配置

以下内容来源于互联网&#xff0c;具体出处不详 据说服务器运行TOMCATJDK环境能负载到动态1W的并发&#xff0c;贴上他的配置&#xff0c;以后有机会在测试&#xff01; java 环境配置&#xff1a; export JAVA_OPTS"-server -Xms8g -Xmx8g -Xss128k -XX:ParallelGCThread…

【AI】图示:精确度(查准率)Precision、召回率(查全率)Recall

对Precision、Recall的直译是“精确度”和“召回率”&#xff0c;第一次接触这两个词&#xff0c;很难从字面上知道它们的含义。而翻译成“查准率”和“查全率”就比较好理解&#xff0c;下面统一使用“查准率”和“查全率”。 1、真假正负例 真正例&#xff08;True Positive…

@程序员,如何“终身成长”与跨界?

文 / Ant说《终身成长》是一碗“鸡汤”并不为过&#xff0c;截止到我看过的前半部分&#xff0c;围绕在一个主题展开——人的潜力是不可知的。换句话说&#xff0c;任何人都有可能成为自己想成为的人。书中列举了大量明星企业与管理者的真实案例&#xff0c;也引用了许多对比实…

TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗

tcp可以通过滑动窗口和拥塞算法实现流量控制&#xff0c;限制上行和下行的流量&#xff0c;但是却不能抵御ddos攻击。 限流只是限制访问流量的大小&#xff0c;是无法区分正常流量和异常攻击流量的。 限流可以控制本软件或者应用的流量大小&#xff0c;从而减少对部署在相同物理…

WPF及Silverlight中将DataGrid数据导出

这段源码是我在项目中实际应用的源码&#xff0c;没有经过删减及处理。 如果你认为有用可以摘去作为自己的导出类中的一个小工具使用。 ///<summary>///数据源导出辅助类 ///</summary>///<remarks>///Author: sucsy ///Create date: 2011-…

首发 | 驭势科技推出“东风网络”:如何找到速度-精度的最优解?| 技术头条...

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 驭势科技给定目标硬件&#xff0c;如何确定最优的速度-精度折衷边界&#xff1f;换言之&#xff1a;给定推断延时的限制&#xff0c;模型能达到的最高精度是多少&#xff1f…

【AI】caffe使用步骤(一):将标注数据生成lmdb或leveldb

1、简述 caffe使用工具 convert_imageset 将标注数据转换成lmdb或leveldb格式&#xff0c;convert_imageset 使用方法可以参考脚本examples/imagenet/create_imagenet.sh。 convert_imageset 在./build/tools/中。 2、convert_imageset命令行参数 ./build/tools/convert_ima…

日本的GMO增加了比特币现金,和另外3种用于贷款项目的加密货币

2019独角兽企业重金招聘Python工程师标准>>> 日本的加密货币交易所 GMO正在不断地向其贷款项目中增加更多的货币&#xff0c;这使得它的客户可以将加密货币借给公司。最初&#xff0c;该项目是为BTC启动的&#xff0c;但现在GMO已经走得更远&#xff0c;并添加了比特…

功能演示:戴尔PowerConnect 8024交换机VLAN的创建与删除

戴尔PowerConnect 8024是一款带24个10 Gb以太网10GBASE-T端口的高密度10 Gb以太网交换机&#xff0c;专为具有高吞吐量和高可用性需求的数据中心、聚合和统一结构部署而设计。 这些高密度10 Gb交换机可用于汇聚型以太网环境&#xff0c;支持密集型虚拟化、iSCSI存储和10 Gb流量…

【AI】caffe使用步骤(二):设计网络模型prototxt

【一】以 lenet_train_test.prototxt 为例 name: "LeNet" layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {scale: 0.00390625}data_param {source: "examples/mnis…

南大和中大“合体”拯救手残党:基于GAN的PI-REC重构网络,“老婆”画作有救了 | 技术头条...

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑编译 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;对于喜欢画画的你来说&#xff0c;总是画得七零八落&#xff0c;不堪入目&#xff0c;但现在&#xff0c;有一…

区块链技术应用领域和优势

区块链的应用正成为很多人关注的领域 &#xff0c;有很多的新应用正在逐步的实施当中&#xff0c;各种的区块链应用也是让众人惊喜不断&#xff0c; 随着区块链技术的发展 &#xff0c;各行各业在应用中所获取的成效也是越来越大&#xff0c; 这大大激发了人们对于区块链技术的…

Kataspace:用HTML5和WebGL创建基于浏览器的虚拟世界

源自斯坦福的创业公司Katalabs发布了一个用于创建基于浏览器的虚拟世界的开源框架。名叫KataSpace的软件&#xff0c;利用了新兴的HTML5技术&#xff0c;以及WebGL和WebSockets&#xff0c;允许用户无需安装任何插件&#xff0c;直接在浏览器的3D环境中展开互动。Katalabs已经推…

十问陆奇:努力、能力和机遇,谁能帮你跑赢未来?

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 陆奇转载自36氪陆奇说&#xff1a;在创业者从0到1的过程中&#xff0c;我们看到的主要挑战有以下几个方面&#xff1a;对需求的理解和判断不够&#xff0c;与目标用户/客户的…

【AI】caffe使用步骤(三):编写求解文件solver.prototxt

【一】参考博客 caffe solver 配置详解&#xff1a;http://www.mamicode.com/info-detail-2620709.html Caffe学习系列(7)&#xff1a;solver及其配置&#xff1a;https://www.cnblogs.com/denny402/p/5074049.html 【二】solver求解文件详解 1、solver求解文件例子如下 ne…

MySQL 8.0 Invisible Indexes 和 RDS 5.6 Invisible Indexes介绍

mysql 在8.0的时候支持了不可见索引,称为隐式索引 索引默认是可以的&#xff0c;控制索引的可见性可以使用Invisible,visible关键字作为create table&#xff0c;create index,alter table 来进行定义。RDS 5.6 Invisible Indexes 也是最近刚刚上线的功能。新购买实例目前已经支…

大有可为的“正则表达式”(二)

5.3. 基本和扩展正则表达式Unix支持两种的正则表达式的版本&#xff1a;&#xff08;1&#xff09;现代版本&#xff1a;扩展正则表达式&#xff08;extended regular expression&#xff0c;ERE&#xff09;&#xff0c;属于IEEE1003.2标准&#xff0c;拥有比BRE更多的功能。…

【AI】caffe使用步骤(四):训练和预测

一、训练 1、直接训练 ./build/tools/caffe train --solverexamples/mnist/lenet_solver.prototxt ./build/tools/caffe train --solverexamples/mnist/lenet_solver.prototxt -gpu all //使用全部的gpu来训练2、采用微调funing-tuning训练法 ./build/tools/caffe train --s…

Github免费中文书《Go入门指南》,带你从零学Go | 极客头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 无闻整理 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导语】Go&#xff08;也称 Golang&#xff09;是 Google 开发的一种静态强类型、编…

sql语句中having的作用是?

HAVING对由sum或其它集合函数运算结果的输出进行限制。比如&#xff0c;我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息&#xff0c;这时我们就需要使用HAVING从句。语法格式为&#xff1a; SELECT "column_name1", SUM("column…

微软重新释出MS10-015 解决蓝屏问题

微软于周二&#xff08;3/2&#xff09;重新释出MS10-015修补程序。由于先前使用者安装该程序时&#xff0c;若电脑中含有Alureon rootkit就会出现更新错误&#xff0c;因而微软也提醒使用者先行杀毒&#xff0c;并避免安装后可能造成的蓝屏画面。 MS10-015是微软在今年2月用来…

share_ptr_c++11

C智能指针 shared_ptr shared_ptr 是一个标准的共享所有权的智能指针, 允许多个指针指向同一个对象. 定义在 memory 文件中(非memory.h), 命名空间为 std. std::shared_ptr<int> sp1 std::make_shared<int>(10);std::shared_ptr<std::string> sp2 std::…

【Python】ubuntu14安装pycaffe环境:python2.7及依赖库

1、问题描述 ubuntu14自带的python2.7版本是python2.7.5&#xff0c;安装pycaffe环境时&#xff0c;出现错误&#xff0c;提示版本低。在bing上搜索源码安装python2.7.16的步骤&#xff0c;后续使用时&#xff0c;又报错&#xff0c;缺少SLL模块&#xff1a; Cant connect to…

周志华、张潼亲自辅导AI课程,DeeCamp 2019正式启动

4 月 8 日&#xff0c;创新工场对外宣布 DeeCamp 2019 人工智能训练营正式启动。 据介绍&#xff0c;DeeCamp 2019 将于 7 月 15 日至 8 月 23 日在北京、上海、南京、广州四地同时举办。今年招生规模也将扩大&#xff0c;计划招收 600 名大学生&#xff0c;进行为期 5 周的理…

No.2 条件

2019独角兽企业重金招聘Python工程师标准>>> clojure中不仅有if 还有when 还有什么when-do when-first when-let 一堆 首先介绍if (defn if? [x](if (pos? x)x(- x))) 这事一个取绝对值的方法,方法名改了下,pos? 是判断是否为正数 参数只能为数字 能看明白吧…

如何用Python和BERT做中文文本二元分类?| 程序员硬核评测

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 王树义来源 | 王树芝兰&#xff08;ID:nkwangshuyi&#xff09;兴奋去年&#xff0c; Google 的 BERT 模型一发布出来&#xff0c;我就很兴奋。因为我当时正在用 fast.ai 的…

【C++】Google Protocol Buffer(protobuf)详解(二)

代码走读&#xff1a;caffe中protobuf的详细使用过程 【一】proto文件&#xff0c;以caffe.proto中BlobShape为例 syntax "proto2"; //指明protobuf版本&#xff0c;默认是v2&#xff0c;其它版本&#xff1a;"proto3"package caffe; // 最终生成c代码…