my blog my blog

Category: Windows
Nginx为网站目录设置密码保护

 

在Nginx的nginx.conf里面有如下的字段

  1. server
  2.     {
  3.         listen 80 default_server;
  4.         #listen [::]:80 default_server ipv6only=on;
  5.         server_name www.nenew.net;
  6.         index index.html index.htm index.php;
  7.         root  /home/wwwroot/default;
  8.         #error_page   404   /404.html;
  9.         include enable-php.conf;
  10.         location /nginx_status
  11.         {
  12.             stub_status on;
  13.             access_log   off;
  14.         }
  15.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  16.         {
  17.             expires      30d;
  18.         }
  19.         location ~ .*\.(js|css)?$
  20.         {
  21.             expires      12h;
  22.         }
  23.         location ~ /\.
  24.         {
  25.             deny all;
  26.         }
  27.         access_log  /home/wwwlogs/access.log  access;
  28.     }
  29. include vhost/*.conf;
  30. }

如果我们想在默认的目录添加密码保护,只保护对目录的访问,也就是登陆这个目录就会输入密码,则我们这样设置

  1. server
  2.     {
  3.         listen 80 default_server;
  4.         #listen [::]:80 default_server ipv6only=on;
  5.         server_name www.nenew.net;
  6.         index index.html index.htm index.php;
  7.         root  /home/wwwroot/default;
  8.         #error_page   404   /404.html;
  9.         include enable-php.conf;
  10.         location /nginx_status
  11.         {
  12.             stub_status on;
  13.             access_log   off;
  14.         }
  15.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  16.         {
  17.             expires      30d;
  18.         }
  19.         location ~ .*\.(js|css)?$
  20.         {
  21.             expires      12h;
  22.         }
  23.         location ~ /\.
  24.         {
  25.             deny all;
  26.         }
  27.         location / 
  28.         {        
  29.   auth_basic “Restricted”;
  30. auth_basic_user_file pass_file;
  31. }
  32.         access_log  /home/wwwlogs/access.log  access;
  33.     }
  34. include vhost/*.conf;
  35. }

其中pass_file是密码文件的绝对路径,密码文件是由用户名和函数 crypt加密的密码组成,可以使htpasswd -c -d pass_file username 来生成。

64位版本的SocksCap64代理程序介绍与推荐

 

奶牛最近在找一个好用的代理程序,支持socks5的tcp和udp两种协议,并且支持64位win8系统,终于最后找到了这个sockscap64.

首先很难的,作者是国人,并且提倡软件免费,并打算一直免费提供sockscap64这软件。sockscap64目前支持socks代理和http代理,并且支持tcp和udp,Sockscap64是基于远程DLL注入技术, 通过修改系统Winsock的API后从而使运行于Sockscap64的网络软件通过SOCKS代理访问网络; 从而实现网络加速或突破局域网限制的功能。经过测试udp功能也比较稳定。

特此推荐,下载http://www.sockscap64.com/software/SocksCap64-setup-2.6.exe

Ubuntu下socks5代理服务器dante-server的安装与配置

 

安装

  1. apt-get install dante-server 

配置文件在/etc/danted.conf

  1. vim /etc/danted.conf 
  2. # $Id: sockd.conf,v 1.43 2005/12/26 16:35:26 michaels Exp $ 
  3. # A sample danted.conf 
  4. # The configfile is divided into three parts; 
  5. #    1) serversettings 
  6. #    2) rules 
  7. #    3) routes 
  8. # The recommended order is: 
  9. #   Serversettings: 
  10. #               logoutput 
  11. #               internal 
  12. #               external 
  13. #               method 
  14. #               clientmethod 
  15. #               users 
  16. #               compatibility 
  17. #               extension 
  18. #               connecttimeout 
  19. #               iotimeout 
  20. #               srchost 
  21. #  Rules: 
  22. #       client block/pass 
  23. #               from to 
  24. #               libwrap 
  25. #               log 
  26. #     block/pass 
  27. #               from to 
  28. #               method 
  29. #               command 
  30. #               libwrap 
  31. #               log 
  32. #               protocol 
  33. #               proxyprotocol 
  34. #  Routes: 
  35.  
  36. # the server will log both via syslog, to stdout and to /var/log/lotsoflogs 这行是日志输出,输出到syslog stdout和lotsoflogs里面
  37. logoutput: syslog stdout /var/log/lotsoflogs 
  38.  
  39. # The server will bind to the address 10.1.1.1, port 1080 and will only 
  40. # accept connections going to that address. 
  41. #internal: 10.1.1.1 port = 1080 
  42. # Alternatively, the interface name can be used instead of the address. 这里设置eth0为网卡,端口1080
  43. internal: eth0 port = 1080 
  44.  
  45. # all outgoing connections from the server will use the IP address 
  46. # 195.168.1.1 
  47. #external: 192.168.1.1,这里是设置流量出口使用的ip,也是用eth0网卡的
  48. external:eth0
  49. # list over acceptable methods, order of preference. 
  50. # A method not set here will never be selected. 
  51. # If the method field is not set in a rule, the global 
  52. # method is filled in for that rule. 
  53.  
  54. # methods for socks-rules. 设置方式为用户名模式
  55. method: username 
  56. #methods for client-rules. 
  57. clientmethod: none 
  58.  
  59. #or for PAM authentification 
  60. #method: pam 
  61.  
  62. # An important section, pay attention. 
  63.  
  64. # when doing something that can require privilege, it will use the 
  65. # userid: 
  66. user.privileged: root 
  67.  
  68. # when running as usual, it will use the unprivileged userid of: 
  69. user.notprivileged: nobody 
  70.  
  71. # If you compiled with libwrap support, what userid should it use 
  72. # when executing your libwrap commands?  "libwrap". 
  73. user.libwrap: nobody 
  74.  
  75.  
  76. # some options to help clients with compatibility: 
  77.  
  78. # when a client connection comes in the socksserver will try to use 
  79. # the same port as the client is using, when the socksserver 
  80. # goes out on the clients behalf (external: IP address). 
  81. # If this option is set, Dante will try to do it for reserved ports aswell. 
  82. # This will usually require user.privileged to be set to "root". 
  83. compatibility: sameport 
  84.  
  85. # If you are using the bind extension and have trouble running servers 
  86. # via the server, you might try setting this.  The consequences of it 
  87. # are unknown. 
  88. compatibility: reuseaddr 
  89.  
  90. # The Dante server supports some extensions to the socks protocol. 
  91. # These require that the socks client implements the same extension and 
  92. # can be enabled using the "extension" keyword. 
  93. # enable the bind extension. 
  94. extension: bind 
  95.  
  96.  
  97. # misc options. 
  98.  
  99. # how many seconds can pass from when a client connects til it has 
  100. # sent us it's request?  Adjust according to your network performance 
  101. # and methods supported. 
  102. #connecttimeout: 30   # on a lan, this should be enough if method is "none". 
  103.  
  104. # how many seconds can the client and it's peer idle without sending 
  105. # any data before we dump it?  Unless you disable tcp keep-alive for 
  106. # some reason, it's probably best to set this to 0, which is 
  107. # "forever". 
  108. #iotimeout: 0 # or perhaps 86400, for a day. 
  109.  
  110. # do you want to accept connections from addresses without 
  111. # dns info?  what about addresses having a mismatch in dnsinfo? 
  112. #srchost: nounknown nomismatch 
  113.  
  114. # The actual rules.  There are two kinds and they work at different levels. 
  115. # The rules prefixed with "client" are checked first and say who is allowed 
  116. # and who is not allowed to speak/connect to the server.  I.e the 
  117. # ip range containing possibly valid clients. 
  118. # It is especially important that these only use IP addresses, not hostnames, 
  119. # for security reasons. 
  120. # The rules that do not have a "client" prefix are checked later, when the 
  121. # client has sent its request and are used to evaluate the actual 
  122. # request. 
  123. # The "to:" in the "client" context gives the address the connection 
  124. # is accepted on, i.e the address the socksserver is listening on, or 
  125. # just "0.0.0.0/0" for any address the server is listening on. 
  126. # The "to:" in the non-"client" context gives the destination of the clients 
  127. # socksrequest. 
  128. # "from:" is the source address in both contexts. 
  129.  
  130.  
  131. # the "client" rules.  All our clients come from the net 10.0.0.0/8. 
  132.  
  133. # Allow our clients, also provides an example of the port range command. 设置客户可以通过任何ip登陆,访问任何ip
  134. client pass { 
  135.         from: 0.0.0.0/0 to: 0.0.0.0/0 
  136. #       method: rfc931 # match all idented users that also are in passwordfile 
  137.  
  138. # This is identical to above, but allows clients without a rfc931 (ident) 
  139. # too.  In practise this means the socksserver will try to get a rfc931 
  140. # reply first (the above rule), if that fails, it tries this rule. 
  141. #client pass { 
  142. #       from: 10.0.0.0/8 port 1-65535 to: 0.0.0.0/0 
  143. #} 
  144.  
  145.  
  146. # drop everyone else as soon as we can and log the connect, they are not 
  147. # on our net and have no business connecting to us.  This is the default 
  148. # but if you give the rule yourself, you can specify details. 
  149. #client block { 
  150. #       from: 0.0.0.0/0 to: 0.0.0.0/0 
  151. #       log: connect error 
  152. #} 
  153.  
  154.  
  155. # the rules controlling what clients are allowed what requests 
  156.  
  157. # you probably don't want people connecting to loopback addresses, 
  158. # who knows what could happen then. 
  159. #block { 
  160. #       from: 0.0.0.0/0 to: 127.0.0.0/8 
  161. #       log: connect error 
  162. #} 
  163.  
  164. # the people at the 172.16.0.0/12 are bad, no one should talk to them. 
  165. # log the connect request and also provide an example on how to 
  166. # interact with libwrap. 
  167. #block { 
  168. #       from: 0.0.0.0/0 to: 172.16.0.0/12 
  169. #       libwrap: spawn finger @%a 
  170. #       log: connect error 
  171. #} 
  172.  
  173. # unless you need it, you could block any bind requests. 
  174. #block { 
  175. #       from: 0.0.0.0/0 to: 0.0.0.0/0 
  176. #       command: bind 
  177. #       log: connect error 
  178. #} 
  179.  
  180. # or you might want to allow it, for instance "active" ftp uses it. 
  181. # Note that a "bindreply" command must also be allowed, it 
  182. # should usually by from "0.0.0.0/0", i.e if a client of yours 
  183. # has permission to bind, it will also have permission to accept 
  184. # the reply from anywhere. 
  185. #pass { 
  186. #       from: 10.0.0.0/8 to: 0.0.0.0/0 
  187. #       command: bind 
  188. #       log: connect error 
  189. #} 
  190.  
  191. # some connections expect some sort of "reply", this might be 
  192. # the reply to a bind request or it may be the reply to a 
  193. # udppacket, since udp is packetbased. 
  194. # Note that nothing is done to verify that it's a "genuine" reply, 
  195. # that is in general not possible anyway.  The below will allow 
  196. # all "replies" in to your clients at the 10.0.0.0/8 net. 
  197. #pass { 
  198. #       from: 0.0.0.0/0 to: 10.0.0.0/8 
  199. #       command: bindreply udpreply 
  200. #       log: connect error 
  201. #} 
  202.  
  203.  
  204. # pass any http connects to the example.com domain if they 
  205. # authenticate with username. 
  206. # This matches "example.com" itself and everything ending in ".example.com". 
  207. #pass { 
  208. #       from: 10.0.0.0/8 to: .example.com port = http 
  209. #       log: connect error 
  210. #       method: username 
  211. #} 
  212.  
  213.  
  214.  
  215.  
  216. # block any other http connects to the example.com domain. 
  217. #block { 
  218. #       from: 0.0.0.0/0 to: .example.com port = http 
  219. #       log: connect error 
  220. #} 
  221.  
  222. # everyone from our internal network, 10.0.0.0/8 is allowed to use 
  223. # tcp and udp for everything else. 设置协议支持tcp和udp
  224. pass { 
  225.         from: 0.0.0.0/0 to: 0.0.0.0/0 
  226.         protocol: tcp udp 
  227.  
  228. # last line, block everyone else.  This is the default but if you provide 
  229. # one  yourself you can specify your own logging/actions 
  230. #block { 
  231. #       from: 0.0.0.0/0 to: 0.0.0.0/0 
  232. #       log: connect error 
  233. #} 
  234.  
  235. # route all http connects via an upstream socks server, aka "server-chaining". 
  236. #route { 
  237. # from: 10.0.0.0/8 to: 0.0.0.0/0 port = http via: socks.example.net port = socks 
  238. #} 

配置完成,

  1. /etc/init.d/danted start 

进行启动。登陆是用本机用户名和密码即可。建议将用户的shell设置为nologin

Emmet For Notepad++的安装方法教程

按照官方的方法教程,安装方法有两种。

第一种:用插件管理器安装,打开插件—插件管理器—显示插件下找到emmet插件安装

第二种:手动方法。

先安装Python Script插件,官方教程上说可以在插件管理器里面安装。下载EmmetNPP 插件,解压缩到 C:\Program Files\Notepad++\plugins 安装目录,启动notepad++就可以看到Emmet插件了。

官方建议是将快捷键Abbreviation设置为tab

但是,奶牛在安装的过程中发现上面的方法不可行,因为插件根本不工作。有Unknown exception和python script plugin did not accept the script错误提示,环境是win8.1 x64位系统,找到解决方法是Python Script插件问题,下载Python Script插件重新安装解决了此问题。

也用Nero刻张音乐CD吧

 

记得自己是一直一直没有过cd机的人呢,唯一的一个cd光盘读取器(好吧,光驱)是在03年家里买的台式机上,那个光驱只能读cd,嗯,就这点儿功能,那时候觉得有个刻录机是很牛气的事儿呢,想刻个什么就刻录个什么。后来,到了大学,奶牛的第一个笔记本是个dvd rw,所以可以刻录了,刻了好多系统盘呢,windows的啊,linux的啊什么的都刻,后来,打算刻光盘卖系统盘呢,遂买了一个移动光驱,可是,没有实施,光驱一直放到现在也没动过,直到——同事想让我帮忙刻张车载音乐CD。

steps:

1.下载安装Nero

2.打开Nero Express,然后选择音乐光盘,然后选择标准音乐光盘。

3.添加音乐:这里说明下,标准音乐cd的话不看音乐源文件大小的,只看音乐的长度,所以建议下载无损音乐,然后转换成wav或者Nero支持的无损格式后添加。

4.放入一张空光盘,刻录就好了。

嗯,简单,就这么简单,奶牛好久都不碰点儿东西了,记录下吧。

gooreplacer+反向代理=完美使用Google各种库

 

事情的起因是这样子的,正看着网页,然后忽然发现ajax.googleapis.com一直一直在载入,就是载入不进去,然后就很难过,我知道是被墙掉了,可是很不甘心,找个反代就可以比较完美解决这个问题,但是单纯的反代在服务器端容易实现,可是我们又不能改人家网站沿用的网址代码,所以,必须要从我们本地的浏览器入手来搞定这个问题。

奶牛一直用firefox用了很多年了,比较习惯,找到了一个插件gooreplacer,国人开发的,使用效果挺好的,用firebug看了下,应该是在页面载入过程中把get方法啥的网址又新加了一个get,来get反代的内容,不懂firefox插件怎么实现过程的,感兴趣的可以看作者的github。

好了,进入正题,下载地址:http://liujiacai.net/gooreplacer/

firefox版本:https://addons.mozilla.org/zh-CN/firefox/addon/gooreplacer/versions/?page=1#version-0.6

chrome版本:https://github.com/jiacai2050/gooreplacer4chrome#install

然后配置也很简单,默认用的科大的反向代理,但是个人感觉效果不好,换了360的反代。

  1. ajax.googleapis.com ---->   ajax.useso.com       
  2. fonts.googleapis.com    ---->   fonts.useso.com  
  3. libs.googleapis.com ---->   libs.useso.com   
  4. themes.googleusercontent.com    ---->   google-themes.lug.ustc.edu.cn        
  5. fonts.gstatic.com   ---->   fonts-gstatic.lug.ustc.edu.cn        

最近都没有搞什么东西,更新非常缓慢,见谅。

Windows下cmd中类似linux命令行的进程管理命令tasklist和taskkill

 

linux下我们用ps来查看进程用kill来结束进程。在windows下的cmd中,也可以通过命令行来完成。

tasklist可以像ps一样列进程,包括可执行文件名,pid什么的,taskkill则用来杀进程。

  1. TASKLIST [/S system [/U username [/P [password]]]] 
  2.          [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH] 
  3.  
  4. 描述: 
  5.     该工具显示在本地或远程机器上当前运行的进程列表。 
  6.  
  7. 参数列表: 
  8.    /S     system           指定连接到的远程系统。 
  9.  
  10.    /U     [domain\]user    指定应该在哪个用户上下文执行这个命令。 
  11.  
  12.    /P     [password]       为提供的用户上下文指定密码。如果省略,则 
  13.                            提示输入。 
  14.  
  15.    /M     [module]         列出当前使用所给 exe/dll 名称的所有任务。 
  16.                            如果没有指定模块名称,显示所有加载的模块。 
  17.  
  18.    /SVC                    显示每个进程中主持的服务。 
  19.  
  20.    /APPS                   显示应用商店应用及其关联进程。 
  21.  
  22.    /V                      显示详细任务信息。 
  23.  
  24.    /FI    filter           显示一系列符合筛选器 
  25.                            指定条件的任务。 
  26.  
  27.    /FO    format           指定输出格式。 
  28.                            有效值: "TABLE"、"LIST"、"CSV"。 
  29.  
  30.    /NH                     指定列标题不应该 
  31.                            在输出中显示。 
  32.                            只对 "TABLE" 和 "CSV" 格式有效。 
  33.  
  34.    /?                      Displays this help message. 
  35.  
  36. 筛选器: 
  37.     筛选器名称     有效运算符           有效值 
  38.     -----------     ---------------           -------------------------- 
  39.     STATUS          eq, ne                    RUNNING | SUSPENDED 
  40.                                               NOT RESPONDING | UNKNOWN 
  41.     IMAGENAME       eq, ne                    映像名称 
  42.     PID             eq, ne, gt, lt, ge, le    PID 值 
  43.     SESSION         eq, ne, gt, lt, ge, le    会话编号 
  44.     SESSIONNAME     eq, ne                    会话名称 
  45.     CPUTIME         eq, ne, gt, lt, ge, le    CPU 时间,格式为 
  46.                                               hh:mm:ss。 
  47.                                               hh - 小时, 
  48.                                               mm - 分钟,ss - 秒 
  49.     MEMUSAGE        eq, ne, gt, lt, ge, le    内存使用(以 KB 为单位) 
  50.     USERNAME        eq, ne                    用户名,格式为 
  51.                                               [域\]用户 
  52.     SERVICES        eq, ne                    服务名称 
  53.     WINDOWTITLE     eq, ne                    窗口标题 
  54.     MODULES         eq, ne                    DLL name 
  55.  
  56. 注意: 当查询远程计算机时,不支持 "WINDOWTITLE" 和 "STATUS" 
  57.       筛选器。 
  58.  
  59. Examples: 
  60.     TASKLIST 
  61.     TASKLIST /M 
  62.     TASKLIST /V /FO CSV 
  63.     TASKLIST /SVC /FO LIST 
  64.     TASKLIST /APPS /FI "STATUS eq RUNNING" 
  65.     TASKLIST /M wbem* 
  66.     TASKLIST /S system /FO LIST 
  67.     TASKLIST /S system /U domain\username /FO CSV /NH 
  68.     TASKLIST /S system /U username /P password /FO TABLE /NH 
  69.     TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running" 

 

  1. TASKKILL [/S system [/U username [/P [password]]]] 
  2.          { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F] 
  3.  
  4. 描述: 
  5.     使用该工具按照进程 ID (PID) 或映像名称终止任务。 
  6.  
  7. 参数列表: 
  8.     /S    system           指定要连接的远程系统。 
  9.  
  10.     /U    [domain\]user    指定应该在哪个用户上下文执行这个命令。 
  11.  
  12.     /P    [password]       为提供的用户上下文指定密码。如果忽略,提示 
  13.                            输入。 
  14.  
  15.     /FI   filter           应用筛选器以选择一组任务。 
  16.                            允许使用 "*"。例如,映像名称 eq acme* 
  17.  
  18.     /PID  processid        指定要终止的进程的 PID。 
  19.                            使用 TaskList 取得 PID。 
  20.  
  21.     /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来 
  22.                            指定所有任务或映像名称。 
  23.  
  24.     /T                     终止指定的进程和由它启用的子进程。 
  25.  
  26.     /F                     指定强制终止进程。 
  27.  
  28.     /?                     显示帮助消息。 
  29.  
  30. 筛选器: 
  31.     筛选器名      有效运算符                有效值 
  32.     -----------   ---------------           ------------------------- 
  33.     STATUS        eq, ne                    RUNNING | 
  34.                                             NOT RESPONDING | UNKNOWN 
  35.     IMAGENAME     eq, ne                    映像名称 
  36.     PID           eq, ne, gt, lt, ge, le    PID 值 
  37.     SESSION       eq, ne, gt, lt, ge, le    会话编号。 
  38.     CPUTIME       eq, ne, gt, lt, ge, le    CPU 时间,格式为 
  39.                                             hh:mm:ss。 
  40.                                             hh - 时, 
  41.                                             mm - 分,ss - 秒 
  42.     MEMUSAGE      eq, ne, gt, lt, ge, le    内存使用量,单位为 KB 
  43.     USERNAME      eq, ne                    用户名,格式为 [domain\]user 
  44.     MODULES       eq, ne                    DLL 名称 
  45.     SERVICES      eq, ne                    服务名称 
  46.     WINDOWTITLE   eq, ne                    窗口标题 
  47.  
  48.     说明 
  49.     ---- 
  50.     1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。 
  51.     2) 远程进程总是要强行 (/F) 终止。 
  52.     3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。 
  53.  
  54. 例如: 
  55.     TASKKILL /IM notepad.exe 
  56.     TASKKILL /PID 1230 /PID 1241 /PID 1253 /T 
  57.     TASKKILL /F /IM cmd.exe /T 
  58.     TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*" 
  59.     TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe 
  60.     TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM * 
  61.     TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*" 

 

windows下git bash如何使用http、https代理

 

以goagent的代理设置为例吧

  1. export http_proxy="http://127.0.0.1:8087" 
  2. export https_proxy="http://127.0.0.1:8087" 

这样子git bash的http和https访问都会走代理了,但是可能会涉及到https证书错误的问题,出现错误提示SSL certificate problem: unable to get local issuer certificate

  1. git config --global http.sslVerify false 

 

win8.1启用WOL功能教程

 

作为windows8.1,系统默认是无法WOL的,虽然你说WOL是关机之后的事儿,但是这跟关机的模式有很大的关系。

首先我们来看一篇文章 “Wake on LAN" (WOL) behavior in Windows 8 and Windows 8.1” ,这是微软官方对WOL在最新的win8和win8.1上的阐释,内容:

  1. The "Wake on LAN" (WOL) feature wakes a computer from a low-power state when a network adapter detects a WOL event.
  2. Typically, such an event is a specially constructed Ethernet packet. The default behavior in response to WOL events has changed from Windows 7 to Windows 8.  
  3. Windows 7 
  4. In Windows 7, the default shutdown operation puts the system into the classic shutdown state (S5), and all devices are put into the lowest power state (D3).
  5. WOL from S5 is not officially supported in Windows 7. However, some network adapters can be left armed for waking if enough residual power is available.
  6. Therefore, waking from S5 is possible on some systems if enough residual power is supplied to the network adapter even though the system is in the S5 state and devices are in D3. 
  7. Windows 8 and Windows 8.1 
  8. In Windows 8 and Windows 8.1, the default shutdown behavior puts the system into the hybrid shutdown state (S4), and all devices are put into D3. WOL from S4 or S5 is unsupported.
  9. Network adapters are explicitly not armed for WOL in either S5 or S4 cases because users expect zero power consumption and battery drain in the shutdown state.
  10. This behavior removes the possibility of invalid wake-ups when an explicit shutdown is requested. Therefore, WOL is supported only from sleep (S3) or hibernation (S4) states in Windows 8 and 8.1. 

首先呢,说明了WOL的工作原理,这是对于计算机在低功耗模式下的一种唤醒,它是通过网卡检测WOL事件完成的,而WOL事件呢就是那个以FFFFFF开头的udp数据包啦,感兴趣的朋友可以看下,这个udp包属于ARP的,抓包看下内容就一目了然了。win8.1的快速关机时将计算机关闭到hybrid shutdown state (S4)而不是 classic shutdown state (S5),而且在S4 S5状态下网卡都是不工作的因为这两种模式都几乎是无功耗的。

  1. In Windows 8 and 8.1, hybrid shutdown (S4) stops user sessions but lets the contents of kernel sessions be written to the hard disk. This enables faster startups. 
  2.  
  3. To disable the S4 state in Windows 8 and 8.1, follow these steps. 
  4.  
  5. Note We do not recommend that you disable the hybrid shutdown (S4) state. 
  6.  
  7.     In Control Panel, open the Power Options item. 
  8.     Click the Choose what the power buttons do link. 
  9.     Clear the Turn on fast startup (recommended) check box. 
  10.     Click Save Settings. 

win8和win8.1支持WOL也是有道可循的,进入控制面板–电源选项—在电源按钮选项哪里将快速启动关闭。然后设备管理器网卡属性中将wol和magic package哪里都允许就搞定了。

技嘉Gigabyte Z87x-oc主板WOL无法唤醒解决方案

 

最近入的第一张台式机主板技嘉Gigabyte Z87x-oc主板,BIOS固件版本是F6,存在电脑关机后无法使用WOL功能唤醒机器的问题,经过一番折腾终于把问题解决了。缕一缕思绪:

1.首先怀疑是BIOS配置问题,WOL选项已经默认开启,跳入下一项

2.网卡驱动上的WOL相关选项设置,设置完成,仍旧无法唤醒,跳回第一项

3.经过测试技嘉Gigabyte Z87x-oc主板的F6 BIOS固件存在WOL功能配置显示与实际相反的bug,即设置为启用实际为不启用,更改为不启用后可以再待机和睡眠状态唤醒成功,但是关机后一段时间无法唤醒。

4.电源存在问题?记得当时安装电源的时候电源少一根线,后来查了下是-5V电源,不是5vsb,忽略,继续查找BIOS问题

5.版本bug?升级到F7 BIOS固件,启动,关机,唤醒失败,问题回到3,还是WOL的显示与实际相反,再在BIOS中将启用改为停用,WOL功能正常,关机等待5分钟后仍然可以正常唤醒。问题解决

 

后记:BIOS升级使用的是技嘉的@BIOS,操作很简单,桌面环境操作,但是开机着实吓了一跳,机器自启两次失败,第三次才启动成功,吓出了一身冷汗,第一次升级BIOS固件,危险性还是相当高的,特别是没有UPS很害怕断电神马的。这次没有升级到最新的F8,万一F8的WOL功能依旧不行,降级也存在危险,有问题也不好处置,因此升级到了一个中间版本的BIOS还是比较保险的。新入了一个netgear wndr3800路由,dd-wrt搞起,准备抽时间写点儿东西神马的,啦啦啦~~~奶牛归来,继续折腾!