需求
实验室有一个路由器,WAN口ip是 10.147.152.27,打印机只能通过一台windows主机 Printer 连接到局域网中,其内部ip地址是192.168.0.110。我的台式机由于一些原因,需要从校园网中连接到打印机,ip地址是10.134.152.72,如果能顺便连上SMB就更好了。
计划
将主机Printer的打印机与文件共享服务暴露到校园网中。主要就是两个阶段,路由器映射、防火墙配置。
路由器映射
路由器的型号是华为,不过TP-LINK也大同小异。我采用了DMZ主机的方式直接进行了主机映射,这种映射方式相当于将路由器收到的所有NAT未绑定端口的包全部转发到DMZ主机上。
当然也可以采用NAT映射的方式,需要映射的端口大概有 TCP-139/445 UDP-137/138
防火墙配置
Okay路由器映射完了,一开始拿nmap一扫,只扫到一个3389 open port,远程连接的一个服务。这说明其他端口都被防火墙filter了,需要额外配置windows防火墙,有这么几种配置方式:
- 不怕侧漏或者已经漏成筛子的敢死队,可以直接把防火墙关了
-
win-防火墙和网络保护-高级设置-入站规则,里面有上述端口相关的防火墙规则,举个例子:
可以看到规则中有个远程地址的属性项,其中设置了本地子网,所以所有来自校园网的流量都被强了。因此改变这条规则的作用域,在远程ip地址中加入我的主机的地址:
这样的操作干N遍,把 TCP-139/445 UDP-137/138 的防火墙规则都修改了。
-
或者新建一个入站规则,就叫“狗洞”,他的作用域只限定到我的台式机10.134.152.72,然后把tcp/udp所有端口都开了。
添加打印机
可能是由于上级路由器的配置问题,我依然无法在“网络”中找到打印机所在的Printer。而直接通过地址栏URL访问则会出现“未授予用户在此计算机上的请求登陆类型”,这是因为通过URL访问的话会使用默认用户Guest。
- 不担心数据安全的猛士可以直接把Guest的权限给开放了,本地安全策略-本地策略-用户权限分配-拒绝从网络访问这台计算机,然后把Guest删了
- 担心数据安全的
net use \\[你的路由器WAN IP] /user:[用户名]
来将默认用户从Guest改成别的用户,我这边是"printer"
在添加打印机的时候,依然会报错,说“打印机名称错误”,使用Wireshark抓包以后可以看到,SPOOLSS协议中的printer name使用了\\[WAN-IP]\printer name
,错在[WAN-IP]
上了,正确的情况下需要使用主机名或者局域网IP访问。因此改写C:\windows\system32\drivers\etc\hosts,追加WAN-IP 你的打印机主机名称
,然后在地址栏直接使用打印机主机名称进行访问。最后成功场景如下: