利用外网主机穿透本地网络防火墙
这篇文章主要记录了一种穿透本地防火墙的方法,即反向连接。笔者将一边学习实践,一边写下这篇文章,过程可能不是最简洁的,仅仅为自己和后人留下參考而已。
笔者须要达到的目的:
笔者使用的主机A,在局域网A内。笔者没有局域网A的管理权限,而且局域网A有防火墙,屏蔽了mail.163.com站点。通过笔者自己家中的一台主机(记作主机B),实现主机A穿透局域网A的防火墙通过主机B訪问mail.163.com站点。
然而。主机B尚未存在,因此本文将用一定篇幅讲述使用最常见的资源,构建起主机B和整个转发系统的过程。
1. 建立外网主机
环境:北京市ADSL网络,联通光纤接入,一台调制解调器,一端接光纤,还有一端接RJ45网线,拨号上网。
RJ45网线接入路由器(极路由2代)WAN口,LAN口连了一根网线到一台交换机。交换机网线连接到主机。主机是小型机,非常省电。执行Win7系统,平时当做下载机。
由于Linux这方面强大,于是打算装一台Linuxserver。考虑到还得当下载机用。因此不能放弃Win系统,自然想到用虚拟机技术解决。
虚拟机是VirtualBox,Linux是CentOS,全都是开源软件。
装好虚拟机须要用yum安装ssh。装全openssh相关的组件。
启动sshd服务,停止iptables服务或者同意远程主机连接22port。
2. 设置主机网络
将VirtualBox虚拟机网卡设置为“网桥”,这样能够通过路由器“DHCP”到固定的局域网IP,方便将来做port转发。
进入路由器管理界面。来到配置DHCP服务的地方,将虚拟机网卡MAC地址与须要分配给其的IP地址绑定。
来到虚拟机(下面称“Linux主机”或“主机B”)中,使用命令 # ifup eth0激活相应网卡,使用 # ifconfig 确认被分配的IP地址。
图1 路由器上的DHCP配置
图2 用ifconfig检查IP获取结果
3. 配置局域网port转发
登陆路由器后台,设置对应的port转发。转发4222port的TCP和UDP数据包到Linux主机。
试着以公网方式訪问这台主机。转发的是默认的sshport号,用ssh连接验证路由器转发设置。
图3 路由器port转发设置
图4 用公网IP地址验证路由器转发设置
4. 设置DDNS
因为使用的是拨号上网,因此一旦断线重拨,IP地址就会发生变化。因此假设我们使用公网IP寻找Linux主机。这套机制的健壮性就会非常差。
我们须要一个动态域名来改善这个问题。可用的DDNS服务提供商有“花生壳”等,笔者之前一直在用他家的服务,免费且可用性不错。
但因为极路由自带DDNS功能,因此本例中使用的是极路由的DDNS服务。
图5 使用DDNS訪问Linux主机
至此。主机B基本建立完毕。
明天開始写主机A的配置过程。以及调试方法,届时有可能还须要在主机B这边做一些设置。