Ubuntu远程登陆、SSH图形界面、WOL远程唤醒
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃
实现目标:通过路由器配置路由路径,将拨号获取的公网IP地址指向局域网Ubuntu服务器。家里有两台路由器,一台TPlink负责拨号和有线局域网(A路由),DHCP+ARP连接一台华为路由器(B路由),负责WiFi传输,实现SSH图形界面、WOL远程唤醒等功能。
一.配置A路由
(图1)
图1是A路由的拨号信息,公网IP地址可以作为SSH的登录地址,也可以直接作为A路由的访问地址(需要设定)。
(图2)
设置转发规则:将NAT设置为开启状态,在转发规则中设置虚拟服务器进行IP地址和端口映射。由于路由器B设置的静态IP地址是192.168.2.100,所以这里映射该IP地址,端口分别映射了122和22,其中122端口对应Ubuntu的WiFi网卡,22端口对应有线网卡。(注:之前设置的是DMZ主机,DMZ主机是将映射的主机完全暴露在广域网中的一种全端口映射,可以实现双向通信,所以DMZ主机安全性较差,而且,据说DMZ优先级低于虚拟服务器,有待验证。)
(图3)
(图4)
MAC绑定:有两种绑定方式:图3为DHCP静态地址分配&图4为静态ARP绑定,这里我都将B路由器的MAC地址和192.168.2.100IP进行了绑定,原因后文再说。至此,通过拨号获取的公网IP地址+22/122端口号已经可以访问到B路由。但是拨号获取的公网IP是不稳定的,随时可能发生断线重连,所以需要进行动态DNS。
(图5)
(图6)
动态DNS:需要在路由器提供的DNS服务商注册获取账号,图5所示,这里TP绑定的是花生壳(新版本的TP已经自己开通了这项服务),花生壳可免费注册壳域名,注册成功并申请免费域名,在TP的动态DNS页面填写个人账户信息,连接状态显示连接成功并在下方域名信息处显示账户所拥有的域名(可以拥有多个域名),以上A路由已基本设置完毕。很多人刚注册完花生壳,看到TP显示连接成功就访问域名,发现访问失败。主要的坑有:1、花生壳并非注册后立即可用,需要等20分钟,而且免费域名,在花生壳域名映射服务器是需要排队的,所以速度慢;2、由于不可知的原因,家庭宽带的80端口是被运营商封锁滴,图6所示,打开TP的远端web管理,把端口改为88,设置IP地址为255.255.255.255,如此才能通过壳域名访问TP的管理界面,也可以通过壳域名进行SSH远程登录。
二、配置B路由器
如果电脑是直接连接在A路由的,可以跳过第2步,直接配置服务器即可,B路由只是一个跳转路由。华为路由器比较坑,号称方便易用,其实阉割了大部分的功能。只做简单处理:
(图7)
设置自动获取(DHCP)IP,由于图3和图4中已经将WAN MAC地址进行了绑定,所以WAN IP一定是192.168.2.100,最终连接状态如图7。
(图8)
设置虚拟服务器,进行NAT端口映射,这里分别将22端口和122端口映射到不同的IP地址(设置Ubuntu服务器的有线-201和无线-200网卡地址不同)。
(图9)
静态地址绑定,如图8所示,开启DHCP服务,并分别对服务器的有线及无线MAC进行静态绑定,不知道华为是DHCP绑定还是ARP绑定,估计是DHCP。
至此B路由设置完毕,如想实现远程管理B路由,可将B路由的80端口映射至A路由中。由于华为路由器没有提供修改80端口的服务,所以还是省省吧。AB路由配置完毕,可以实现ssh穿透。但是如果要实现wake on lan,就要做出一些改变。
三、关于wake on lan
先讨论一下关于DHCP和ARP绑定,前面A路由是通过DHCP+ARP绑定的B路由,但是遗憾,我的B路由是华为的A1路由,不支持ARP静态地址绑定,这样就无法wake on lan了。DHCP只是在服务器增加了一条静态地址分配规则,但是并没有在路由规则里进行MAC绑定,没有绑定ARP,其他用户还是可以通过手动配置IP的方法抢IP,另外一些一些恶意软件和病毒还可以加进行ARP欺骗攻击。而且wake on lan的工作机制是主机的网卡仍然保持工作,当路由器接到wake信号后,如果没有通过ARP绑定MAC,路由器是不会把信号发送给主机的。所以为了实现wake on lan,最后还是把主机直接连接在了A路由,必须是有线连接,目前无线网卡还没发现有支持WOL的,可能是因为功耗?
需要修改的很简单,把主机通过有线连接A路由,并将A路由配置中绑定B路由MAC的换成绑定主机MAC即可。
四、服务器主机SSH和WOL配置
主机要实现远程ssh和外网WOL功能(附带一个Teamviewer),以下直接在root账号下操作:
1、查看服务器是否安装了ssh :ps -e | grep ssh*
安装ssh:apt-get install ssh
2、ssh图形界面:
修改配置服务器文件:vim /etc/ssh/ sshd_config。如图10,ssh端口号默认22,将 X11Forwarding设置yes,UseLogin设置no,重启ssh:进入 cd /etc/init.d目录,执行 ./ssh restart。X11是一种面向Unix及类Unix系统的图形界面协议。在网上看到如下的层次关系:Unix本身–>X服务器<-[通过X协议交谈]->窗口管理器(综合桌面环境)–>X应用程序。由于服务器是Ubuntu16.04,所以支持X11。
(图10)
连接的ssh图形界面的客户端都是通过X11来实现连接的,Windows需要借助三方工具如Xmanager来连接(仅用Xshell是不行的),mac使用的是原生的X11,Ubuntu则需要安装ssh客户端 apt-get install openssh-client,在/etc/ssh/ssh_config配置文件中,找到ForwardAgent yes,ForwardX11 yes,ForwardX11Trusted yes这3个确保是yes。
mac和Ubuntu执行图形界面连接代码基本一致: ssh -X root@XXX.XXX.XXX.XXX,如果ssh修改了端口,可写为ssh -X -p prot root@XXX.XXX.XXX.XXX(如果配置了路由器动态域名DNS,那么可以直接将ssh中的IP地址XXX.XXX.XXX.XXX 替换为域名)。mac在OS X版本后不再随附X11,如有需要,可到官方网站 www.xquartz.org安装免费版,否则无法使用ssh图形界面。
Windows需要借助Xmanager帮助实现ssh。图11为Windows下Xshell登录方式,如需启动图形界面应用程序,则还需要点选隧道设置中的转发X11连接(图11-3)或者直接使用Xmanager中的Xstart(图12)
(图11-1、2、3)
(图12)
据说Gnome桌面也是可以图形传输的http://blog.csdn.net/jlds123/article/details/11054733,传输画面很卡顿,而且目前Ubuntu大部分都默认使用unity桌面了,Gnome还需要另外安装,所以不推荐。如果真想远程连接桌面,不如使用teamviewer。
3、WOL(wake on lan)
WOL功能的实现是在网卡的支持下实现的,所以如果你的网卡不支持还是买个向日葵吧。
查看网卡信息:ifconfig。Linux某些版本网卡命名以不再ethX的命名规则,而是根据固件、拓扑及位置信息分配固定名称,例如这里的eno1表示合并固件或者 BIOS 的名称为板载设备提供索引号的名称(可以理解为主板自带网卡),本来还有块无线网卡,由于不支持WOL,为防止网络冲突已将其禁用。这里eno1的MAC地址即前文所述需要进行ARP绑定和DHCP静态地址绑定的(图3图4)。
确认网卡是否支持WOL:ethtool eno1(如没有ethtool请安装)。如图13,信息中出现“Supports Wake-on:pumbg Wake-on : g”则表示支持WOL。
修改配置文件:nano /etc/rc.local新增2行:
sleep 5
ethtool -s eth0 wol g
nano /etc/init.d/halt修改1行:
NETDOWN = no
(图13)
设置BIOS开启WOL:不同主板设置大同小异,都要实现两步,一是找到Power电源管理或Wake on Lan等类似选项,设置Power on by PCIE为enable;第二部关闭Power电源管理等关于节能的设置。
本地软件推荐:Windows:wake on lan (https://github.com/basildane/WakeOnLAN/releases/tag/2.11.15)如图14
MAC:wake on lan(商店有免费版)
Android:wake on lan http://www.wandoujia.com/apps/net.mafro.android.wakeonlan
Ubuntu:命令行 apt-get install wakeonlan
参考:http://www.linuxidc.com/Linux/2012-07/64696.htm
(图14)
4、关于TeamViewer
只介绍Ubuntu下常用命令:
teamviewer start #TeamViewer user interface (if not running).
teamviewer help #Print this help screen.
teamviewer version #Print version information.
teamviewer info #Print version, status, id.
teamviewer ziplog #Create a zip containing all teamviewer logs (useful when contacting support).
teamviewer license [show|accept] #Interactively agree or show/agree to End User License Agreement.
teamviewer setup #Configure headless modes (non-gui/console)
teamviewer passwd [PASSWD] #Set a password (useful when installing remote (ssh). 注意[]只是标注
teamviewer daemon status #Show current status of the TeamViewer daemon.
teamviewer daemon start #Start TeamViewer daemon.
teamviewer daemon stop #Stop TeamViewer daemon.
teamviewer daemon restart #Stop/Start TeamViewer daemon.
teamviewer daemon disable #Disable TeamViewer daemon - don't start daemon on system startup.
teamviewer daemon enable #Enable TeamViewer daemon - start daemon on system startup (default).
注意:若wol后想用teamviewer登录服务器,需要使用的命令:1、teamviewer daemon start开启teamviewer服务;2、teamviewer info查看teamviewerID信息;3、teamviewer passwd XXX将teamviewer密码修改为XXX。在本地通过ID和密码远程连接teamviewer,若服务器没有连接显示器,则图形界面信息可能不会传输过来,这时候连接teamviewer显示的是控制台信息,解决的办法就是给服务器加一台显示器。
//如需有疑问可与作者私信沟通,转载发表请注明出处,尊重作者劳动成果。