映射内网ftp服务器到公网报错问题解决
这两天公司测试环境有个需求要让合作方通过ftp推送数据,一般内网环境是不会对公网开放ftp服务的,但是因为是临时需求就帮着搭了ftp服务,并且做了公网映射。ftp服务搭好之后在内网访问正常,但是在公网访问出现可以登录无法传输数据。报错如下:
root># ftp 111.13.101.208 22220
Connected to 111.13.101.208 (111.13.101.208).
220 (vsFTPd 2.2.2)
Name (111.13.101.208:root): user1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,1,180,184,171).
ftp: connect: Connection timed out
ftp> put 1.txt
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,1,180,182,129).
ftp: connect: Connection timed out
在网上查了说是ftp被动模式造成的,可以使用passive命令来开启或者关闭被动模式。但由于我这里是通过出口设备映射到公网,所以被动模式更符合需求,使用passive并不能解决问题。另外上面小括号里的(192,168,1,180,182,129)这一串字符搞的我很懵逼,这里明显应该是IP+PORT为什么是这个样子?网上查了下,最后两段是10进制端口转换成16进制拆分开转换成10进制,(lll¬ω¬) 拿上面的举个例子:
182--> 0xb6 #10转16 129-->0x81 #10转16 0xb681==46721 #16转10
关于被动模式的开启方法在服务器端修改了/etc/vsftpd/vsftpd.conf文件:
root># cat /etc/vsftpd/vsftpd.conf | grep -v "^#"
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=000
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
listen=YES
listen_port=22220
local_root=/home/user1 #想指定用户访问目录时可用此项来设置
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=NO #以上为初始vsftp配置,下面是开启被动模式参数
pasv_enable=YES
pasv_min_port=22221
pasv_max_port=
设置完成后重启服务,然后再次尝试访问:
ftp> ls
227 Entering Passive Mode (192,168,1,180,56,205).
ftp: connect: Connection timed out
ftp> ls
227 Entering Passive Mode (192,168,1,180,56,206).
ftp: connect: Connection timed out
ftp> ls
227 Entering Passive Mode (192,168,1,180,56,205).
ftp: connect: Connection timed out
ftp> bye
221 Goodbye.
还是出现报错,但是端口好像已经变成服务端设置的参数了。另外在使用内网机器直接通过公网IP访问ftp服务也出现报错,错误为:
425 Security: Bad ip connecting
然后在服务器配置文件中添加了如下参数,并重启服务器:
# vi /etc/vsftpd/vsftpd.conf
添加:pasv_promiscuous=yes #此选项激活时,将关闭PASV模式的安全检查,默认为NO
# service vsftpd restart
内网通过公网IP访问ftp可以正常传输数据,而使用外网设备依然报错,后来注意到报错中(192,168,1,180,56,205)这里的地址为内网服务器的IP,外网设备发起连接的地址应该是映射的公网IP(111.13.101.208),很显然在ftp连接建立之后,服务器返回了自己真实的IP给客户端,但是客户端无法通过这个私有IP(192.168.1.180)发起数据传输请求,所以导致timeout。然后在网上找到了这样一个参数:
pasv_address #回传给客户端的IP
# vi /etc/vsftpd/vsftpd.conf
添加:pasv_address=111.13.101.208 #这里返回映射的公网IP给客户端
# service vsftpd restart
然后再进行访问发现数据可以正常传输,问题解决。
映射内网ftp服务器到公网报错问题解决的更多相关文章
- 映射内网ftp服务器到公网后内网访问出错问题
上文说道映射后外网无法访问解决:https://www.cnblogs.com/Dev0ps/p/9073048.html 添加了ftp的pasv_address的地址 ,内网客户端要设置主动模式(a ...
- 内网客户 通过 公网域名/ip 访问内网web服务器 出错
在一内部局域网中, client 内网地址为 10.0.0.2 web 服务器内网地址为 10.0.0.1 外网地址为 211.6.15.1 域名为 xx.love.com ...
- 工具篇:使用natapp工具映射内网到外网访问
一.环境说明 开发基于微信公众号的应用最大的痛苦之处就是调试问题,每次实现一个功能后都需要部署到一个公网服务器进行测试,因为微信用户每次向公众号发起请求时,微信服务器会先接收到用户的请求,然后再转发到 ...
- 用 ROS 做内网DNS服务器
转载:http://iliuyong.iteye.com/blog/1035692 用 ROS 做内网DNS服务器方法:1.ROS 设置IP ->DNS 选择"static" ...
- Apache James搭建内网邮件服务器
Apache James搭建内网邮件服务器 极客521 | 极客521 2014-08-21 148 阅读 java 大概之前两个礼拜的日子,讨论会介绍了关于了.net内网邮件服务器的搭建.所以自己也 ...
- 外网zabbix-server使用主动模式监控公司内网windows服务器
外网zabbix-server使用主动模式监控公司内网windows服务器 1.Zabbix Agent active批量调整客户端为主动模式监控将Template OS Windows模板调整为主动 ...
- 云计算之路-试用Azure:搭建自己的内网DNS服务器
之前我们写过一篇博文谈到Azure内置的内网DNS服务器不能跨Cloud Service,而我们的虚拟机部署场景恰恰需要跨多个Cloud Service,所以目前只能选择用Azure虚拟机搭建自己的内 ...
- wstngfw中使用虚拟IP映射内网IP
wstngfw中使用虚拟IP映射内网IP -------------------------------- Server01: IP: 192.168.195.73/24 GW: 192.168.19 ...
- go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量
go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...
随机推荐
- Linux 系统应用编程——线程基础
传统多任务操作系统中一个可以独立调度的任务(或称之为顺序执行流)是一个进程.每个程序加载到内存后只可以唯一地对应创建一个顺序执行流,即传统意义的进程.每个进程的全部系统资源是私有的,如虚拟地址空间,文 ...
- 基于Redis的分布式锁两种实现方式
最近有一个竞拍的项目会用到分布式锁,网上查到的结果是有三种途径可以实现.1.数据库锁机制,2.redis的锁,3.zookeeper.考虑到使用mysql实现会在性能这一块会受影响,zookeeper ...
- JAVAEE——BOS物流项目12:角色、用户管理,使用ehcache缓存,系统菜单根据登录人展示
1 学习计划 1.角色管理 n 添加角色功能 n 角色分页查询 2.用户管理 n 添加用户功能 n 用户分页查询 3.修改Realm中授权方法(查询数据库) 4.使用ehcache缓存权限数据 n 添 ...
- 学习jQuery必须知道的几种常用方法
jQuery事件处理 ready(fn) 代码: $(document).ready(function(){ // Your code here...}): 作用:它可以极大地提高web应用程序的响 ...
- C++内存分区
C++的内存划分为栈区.堆区.全局区/静态区.字符串常量和代码区. 这里去掉自由存储区,增加了代码区,理由会在下面讲到. 栈区:由系统进行内存的管理. 说明:主要存放函数的参数以及局部变量.栈区由系统 ...
- orderBy新写法
通常,我们处理排序规则的处理方法是在sql 语句中order by create_time desc, 但是这时我们需要从控制器中一步步找到该方法,操作多. 我们试着将业务逻辑拆分到控制器 中, 把排 ...
- 中文字体名称对照表(unicode码)及20个web安全字体
在Web编码中,CSS默认应用的Web字体是有限的,虽然在新版本的CSS3,我们可以通过新增的@font-face属性来引入特殊的浏览器加载字体.但多数情况下,考虑各个因素的影响我们还是在尽量充分利用 ...
- Opencv3.1+python2.7的CentOS7安装
http://blog.csdn.NET/daunxx/article/details/50506625 转载注释:有些包名和系统包名并不匹配,yum install 找不到的时候,可以yum sea ...
- Android 众多的布局属性详解
http://www.open-open.com/lib/view/open1328686184311.html Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了 ...
- docker学习笔记(一)—— ubuntu16.04下安装docker
docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...