外网远程控制局域网内主机,路由器端口转发设置

背景:
内网主机A配置:
ip: 192.168.1.100
gateway: 192.168.1.1 (也是主机A连接到的路由器LAN口地址)
DNS:201.101.172.35

虚拟机centos7配置:(虚拟机网络模式选的是桥接模式)
ip: 192.168.1.120
gateway: 192.168.1.1
DNS:201.101.172.35

A通过路由器可以访问外网。
主机A上安装了virtualbox虚拟机,虚拟机中以桥接模式安装了centos7。
centos7的ip为固定ip:192.168.1.120。之所以把centos7的ip设置为固定ip,就是为了方便远程控制。(centos7固定ip的设置方法参考我另一篇文章:http://blog.csdn.net/liu_shi_jun/article/details/78088185

现在我有两个需求:
1. 从公司(外部网络)访问远程控制我的内网主机A
2. 从公司(外部网络)ssh 连接我的虚拟机系统centos7。

我的主机A之所以能够上网,是因为A连接到了路由器,路由器上有公网IP,当A向外发送信息时,先发送到路由器,路由器再根据目的地址进行转发,返回信息也是先发送到路由器,再由路由器发送到内网主机A上。但是远程连接就行不通了,我远程连接只能连接到路由器(路由器有公网IP),但却无法定位到具体某一台内网电脑上。不过通过在路由器上设置端口映射来解决这个问题。

路由器的虚拟服务器(端口映射)功能:对Linux和Windows都适用
此方法利用路由器的虚拟服务器(端口映射)功能将内网映射到外网,从而实现在互联网上访问局域网内部机器的特定端口服务的功能

在内网主机A打开浏览器登入路由器地址:192.168.1.1
点击转发规则—虚拟服务器,创建端口映射。

添加新条目,本机的ip是192.168.1.100,需要连接的端口是3389。(远程控制默认的端口就是3389).

这个图片是网上找来的图片,所以ip和端口和我实际设置的ip、端口不一致,以文字为主
点击保存即可。

然后点击运行状态,查看路由器ip(注意:路由器ip,不一定是外网ip,有可能还经过了其他路由,本文中只经过了一层路由,所以路由器上WAN口ip为公网ip)
看到路由的ip是,100.64.73.154。
设置好之后,再外网电脑上打开远程桌面连接。
这里写图片描述

输入ip地址:100.64.73.153和用户名,这里用户名就是我A电脑上的账户名,如果你没有设置过,那么一般是administrator,这是windows的默认账户。

这里写图片描述
远程桌面默认的端口是3389。与我们在路由器上设置的映射端口是一致的。因为我这是测试,所以没有再去额外修改远程控制的端口号,如果是实际生产环境,或者对安全有要求的情况下,需要修改远程桌面所连接的端口号,以防止别人通过这个默认端口对你进行攻击。

不出意外的话,就能远程控制我的内网电脑A了。然后我点击“连接”按钮,却依然连不上!!!
提示我“凭证不工作”,我明明用户名、密码输入的没错啊(其实我没设置密码,哈哈)!当然,如果你出现这个错误,首先检查你输入的用户名,密码是否有误。我的解决办法。

主机A(被控机上)打开本地组策略编辑器,看下有关系统安全设置的选项,将本地账户的共享和安全模型设置为经典模式

 开始-->运行->输入:gpedit.msc->计算机配置->Windows设置->安全设置->本地策略->安全选项->网络访问:本地帐户的共享和安全模型。
 修改为使用经典模式,如下图

这里写图片描述

设置好之后,总应该好了吧。再次远程连接,提示“由于账户限制,无法登陆”!!!还是没连上! 竟然是因为我没输入密码的缘故!原来对于无密码登陆用户,windows是有安全限制的。解决办法:

开始-运行-gpedit.msc-回车-计算机配置-windows设置-安全设置-本地策略-安全选项-账户:使用空白密码的本地账户只允许进行控制台登录-双击选择已禁用-确定
这里写图片描述
将它禁用掉。或者给账户设置一个密码,推荐给账户设置密码!
再次远程桌面,终于成功了!!!

对于第二个需求,只需要在路由器上再添加一条端口映射,端口选22(ssh默认连接端口为22),ip为centos7的ip:192.168.1.120。

总结:
为什么我做端口映射就可以访问到我的内网主机了呢?
普遍的说法是:路由器上的端口映射能够将发给这个端口的数据转发给内网主机,所以你通过路由器ip+端口就可以访问内网主机了呀。
其实这种说法不明确,通过这次安装,我的理解是:
首先我在被控机A上设置了允许远程控制,这是前提。其实这一步就在主机A上开放了3389端口,内部远程控制的程序就在监听这个端口。外网远程控制时,将数据首先发送到路由器上,路由器检查目的端口,发现是3389,那么根据端口映射,将数据转发到内网主机A上。我们知道,应用层的数据发送需要ip和端口来定位。所以其实是将数据发到主机A的3389端口上,主机A上也正在监听这个3389端口这个端口,一拍即合。
所以对于

路由器的虚拟服务器(端口映射)功能:对Linux和Windows都适用
此方法利用路由器的虚拟服务器(端口映射)功能将内网映射到外网,从而实现在互联网上访问局域网内部机器的特定端口服务的功能

这句话的理解更清晰了。如果被控机上不开启远程控制,也就是不开放3389端口,即使你路由器将数据转过来了,被控机会鸟你吗!肯定会直接将这些信息丢弃!
由此我们也知道,对于ssh连接centos7,路由器上设置的端口也不一定要22,只要被控机centos7修改了ssh服务的端口号,那么这个路由器上的设置也是可以修改的。

发布了89 篇原创文章 · 获赞 60 · 访问量 29万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览