最近要apt-add-repository 个 ppa装个东西,发现电信下那速度实在太慢了,无法,只能代理下了。LINUX下可以实现SSH全局代理的软件有tsocks和proxychains两种,但是个人感觉proxychains要更加稳定简单。

假设代理为127.0.0.1,端口为7000。我在Ubuntu下安装。
安装很简单:

sudo apt-get install proxychains

配置:

sudo vi /etc/proxychains.conf

要选 dynamic_chain,而不是random_chain和strict_chain。即注释掉strict_chain和random_chain那两行。

然后在最后的[ProxyList]下面添加: socks5 127.0.0.1 7000

使用方法:
proxychains <程序名>
即可让程序使用代理。

PS:7000端口是我本地的SSH端口,因为我用的是ssh -D 7000。

转载:Linux下让SSH/SOCKS成为全局代理 轻松冲浪


var allLi=document.getElementById("slideUl_a");
var classCss=" ;background:#FEFAF1;border:1px solid #FED79E;";
var classCss2=" ;background:#fff;border:1px solid #fff;";
var allLiQuery=allLi.getElementsByTagName("li");
var lilen=allLiQuery.length;
for(var i =0;i<lilen;i++){
    allLiQuery[i].onmouseover=function(){
         this.style.cssText+=classCss; 
    }
    allLiQuery[i].onmouseout=function(){
         this.style.cssText+=classCss2; 
    }
}

from http://www.laifuying.com/archives/554


Highlight.js是一个开源的JS框架,用于网页代码高亮。当它运行时,会自动读取pre标签的文本并自动识别语言。当然,也可以通过给class赋值做到手动设置语言。
使用方法很简单。


一些链接

官方github地址
官方网站
主题&效果预览
下载地址


获取

可以直接下载JS文件并自行编译使用,或者任选以下两个CDN之一使用

jsdelivr

在header标签中加入

<link rel="stylesheet" href="//cdn.jsdelivr.net/highlight.js/8.8.0/styles/default.min.css"> 

在网页footer处加入

<script src="//cdn.jsdelivr.net/highlight.js/8.8.0/highlight.min.js"></script>

或者是cdnjs

在网页header处加入

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.8.0/styles/default.min.css">

在网页footer处加入

<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.8.0/highlight.min.js"></script>

我推荐使用Jsdelivr。从ping服务器测试可以看到,Jsdelivr在中国境内几乎每个省份都有CDN节点,延迟最低可以达到10ms-。而CloudFlare的cdnjs就显得不那么尽人意。

使用


开启功能

只要在底部加入函数

<script>hljs.initHighlightingOnLoad();</script>

即可

网页标签用法

<pre><code class="php">
    <?php echo 'hello world'; ?>
</code></pre>

以此类推
如果不想让pre中的代码高亮,给class加上nohighlight样式即可

<pre><code class="nohighlight">...</code></pre>


修改主题的方法

highlight.js提供了大量的主题,可以在 主题&效果预览 中挑选。
例如我选择了"vs"主题,只要将引用的css修改为

<link rel="stylesheet" href="//cdn.jsdelivr.net/highlight.js/8.8.0/styles/vs.min.css">

就可以了

在博客程序中的用法


Pagekit

site->设置->Code
将代码对应加入header和footer

Wordpress

主题->编辑
手动编辑header.php和footer.php

Typecho

与WordPress同理,直接修改header和footer即可

转自:https://touko.moe/blog/howtouse-highlightjs


转载于:http://lesca.me/archives/iptables-examples.html
详情看:http://lesca.me/topics/network/iptables
看了那么多iptables的教程,这篇教程还是比较全面易懂的
其他:Debian VPS下使用iptables防火墙
iptables防火墙的实例教程

本文介绍25个常用的iptables用法。如果你对iptables还不甚了解,可以参考上一篇iptables详细教程:基础、架构、清空规则、追加规则、应用实例,看完这篇文章,你就能明白iptables的用法和本文提到的基本术语。

一、iptables:从这里开始

删除现有规则

iptables -F
(OR)
iptables --flush

设置默认链策略

iptables的filter表中有三种链:INPUT, FORWARD和OUTPUT。默认的链策略是ACCEPT,你可以将它们设置成DROP。

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

你需要明白,这样做会屏蔽所有输入、输出网卡的数据包,除非你明确指定哪些数据包可以通过网卡。

屏蔽指定的IP地址

以下规则将屏蔽BLOCK_THIS_IP所指定的IP地址访问本地主机:

BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
(或者仅屏蔽来自该IP的TCP数据包)
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

允许来自外部的ping测试

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

允许从本机ping外部主机

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

允许环回(loopback)访问

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

二、iptables:协议与端口设定

允许所有SSH连接请求

本规则允许所有来自外部的SSH连接请求,也就是说,只允许进入eth0接口,并且目的端口为22的数据包

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

允许从本地发起的SSH连接

本规则和上述规则有所不同,本规则意在允许本机发起SSH连接,上面的规则与此正好相反。

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

仅允许来自指定网络的SSH连接请求

以下规则仅允许来自192.168.100.0/24的网络:

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

上例中,你也可以使用-s 192.168.100.0/255.255.255.0作为网络地址。当然使用上面的CIDR地址更容易让人明白。

仅允许从本地发起到指定网络的SSH连接请求

以下规则仅允许从本地主机连接到192.168.100.0/24的网络:

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

允许HTTP/HTTPS连接请求

# 1.允许HTTP连接:80端口
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

# 2.允许HTTPS连接:443端口
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

允许从本地发起HTTPS连接

本规则可以允许用户从本地主机发起HTTPS连接,从而访问Internet。

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

类似的,你可以设置允许HTTP协议(80端口)。

-m multiport:指定多个端口

通过指定-m multiport选项,可以在一条规则中同时允许SSH、HTTP、HTTPS连接:

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

允许出站DNS连接

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

允许NIS连接

如果你在使用NIS管理你的用户账户,你需要允许NIS连接。即使你已允许SSH连接,你仍需允许NIS相关的ypbind连接,否则用户将无法登陆。NIS端口是动态的,当ypbind启动的时候,它会自动分配端口。因此,首先我们需要获取端口号,本例中使用的端口是853和850:

rpcinfo -p | grep ypbind

然后,允许连接到111端口的请求数据包,以及ypbind使用到的端口:

iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
iptables -A INPUT -p udp --dport 850 -j ACCEPT

以上做法在你重启系统后将失效,因为ypbind会重新指派端口。我们有两种解决方法:
1.为NIS使用静态IP地址
2.每次系统启动时调用脚本获得NIS相关端口,并根据上述iptables规则添加到filter表中去。

允许来自指定网络的rsync连接请求

你可能启用了rsync服务,但是又不想让rsync暴露在外,只希望能够从内部网络(192.168.101.0/24)访问即可:

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

允许来自指定网络的MySQL连接请求

你可能启用了MySQL服务,但只希望DBA与相关开发人员能够从内部网络(192.168.100.0/24)直接登录数据库:

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

允许Sendmail, Postfix邮件服务

邮件服务都使用了25端口,我们只需要允许来自25端口的连接请求即可。

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

允许IMAP与IMAPS

# IMAP:143
iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

# IMAPS:993
iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

允许POP3与POP3S

# POP3:110
iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

# POP3S:995
iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

防止DoS攻击

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
  • -m limit: 启用limit扩展
  • –limit 25/minute: 允许最多每分钟25个连接
  • –limit-burst 100: 当达到100个连接后,才启用上述25/minute限制

三、转发与NAT

允许路由

如果本地主机有两块网卡,一块连接内网(eth0),一块连接外网(eth1),那么可以使用下面的规则将eth0的数据路由到eht1:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

DNAT与端口转发

以下规则将会把来自422端口的流量转发到22端口。这意味着来自422端口的SSH连接请求与来自22端口的请求等效。

# 1.启用DNAT转发
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to-destination 192.168.102.37:22

# 2.允许连接到422端口的请求
iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

假设现在外网网关是xxx.xxx.xxx.xxx,那么如果我们希望把HTTP请求转发到内部的某一台计算机,应该怎么做呢?

iptables -t nat -A PREROUTING -p tcp -i eth0 -d xxx.xxx.xxx.xxx --dport 8888 -j DNAT --to 192.168.0.2:80
iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.2 --dport 80 -j ACCEPT

当该数据包到达xxx.xxx.xxx.xxx后,需要将该数据包转发给192.168.0.2的80端口,事实上NAT所做的是修改该数据包的目的地址和目的端口号。然后再将该数据包路由给对应的主机。
但是iptables会接受这样的需要路由的包么?这就由FORWARD链决定。我们通过第二条命令告诉iptables可以转发目的地址为192.168.0.2:80的数据包。再看一下上例中422端口转22端口,这是同一IP,因此不需要设置FORWARD链。

SNAT与MASQUERADE

如下命令表示把所有10.8.0.0网段的数据包SNAT成192.168.5.3的ip然后发出去:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j snat --to-source 192.168.5.3

对于snat,不管是几个地址,必须明确的指定要snat的IP。假如我们的计算机使用ADSL拨号方式上网,那么外网IP是动态的,这时候我们可以考虑使用MASQUERADE

iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE

负载平衡

可以利用iptables的-m nth扩展,及其参数(–counter 0 –every 3 –packet x),进行DNAT路由设置(-A PREROUTING -j DNAT –to-destination),从而将负载平均分配给3台服务器:

iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443

自定义的链

记录丢弃的数据包

# 1.新建名为LOGGING的链
iptables -N LOGGING

# 2.将所有来自INPUT链中的数据包跳转到LOGGING链中
iptables -A INPUT -j LOGGING

# 3.指定自定义的日志前缀"IPTables Packet Dropped: "
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

# 4.丢弃这些数据包
iptables -A LOGGING -j DROP

References:

[1] 25 Most Frequently Used Linux IPTables Rules Examples
[2] iptables: SNAT, DNAT, MASQUERADE的联系与区别



教程来自:
phpMyadmin新建MYSQL数据库,添加用户并配置用户权限(图片教程)
MySql管理工具phpMyadmin创建数据库和设置用户权限详细图文教程


phpMyAdmin是一款不错的管理mysql的web系统,利用phpMyAdmin创建数据库,创建用户,设置用户权限,备份数据,恢复数据都很方便。
在管理数据库方面,安全非常重要,最小的的权限,最大的安全。下面讲下如何通过phpMyAdmin来设置不同数据库的访问用户权限。
第一步:管理员权限账号登陆phpMyAdmin,一般用root登录
第二部:创建要设置权限的数据库(如果已经存在就不需要了)

填好数据库名称,点击创建,数据看就建好了(新版没有可选的数据库编码,一般可以选择的是“中文-Chinese simplified”编码)
第三步:创建管理用户

创建完数据库后,点击新数据库m69w.com,点击权限,出现一个新界面,再点击添加新用户,如上图

再次强调
在这一步时,要特别注意,全局权限不需要选择,千万不能给全局的任何权限了,那只是root该有的。
点执行即可然后直接点执行。
第四步:设置用户权限
在下图的权限设置中,我们把“数据”、“结构”两列的权限全部选中,管理权限都不要选。

选择相应的权限,点击执行

上面权限意思可以对照下面翻译:
数据:
SELECT:允许读取数据。
INSERT:允许插入和替换数据。
UPDATA:允许更改数据。
DELETE:允许删除数据。
FILE:允许从文件中导入数据以及将数据导出至文件。
结构:
CREATE:允许创建新数据库和表。
ALTER:允许修改现有表的结构。
INDEX:允许创建和删除索引。
DROP:允许删除数据库和表。
CREATE TEMPORARY TABLES:允许创建暂时表。
CREATE VIEW:允许创建新的意见。
SHOW VIEW:显示创建的看法。
CREATE ROUTINE:允许创建存储过程。
ALTER ROUTINE:允许改变和下降存储过程。
EXECUTE:允许许执行存储过程。
管理:
GRANT:允许添加用户和权限,而不允许重新载入权限表。
SUPER:允许在达到最大允许数目时仍进行连接。
PROCESS:允许查看进程列表中的完整查询。
RELOAD:允许重新载入服务器设置并刷新服务器的缓存。
SHUTDOWN:允许关闭服务器。
SHOW DATABASES:允许访问完整的数据库列表。
LOCK TABLES:允许锁住当前线索的表。
REFERENCES:在此版本的 MySQL 中无效。
REPLICATION CLIENT:用户有权询问附属者/控制者在哪里。
REPLICATION SLAVE:回复附属者所需。
CREATE USER:允许创建,下降和重新命名的用户帐户。

到这里,我们已经全部设置完毕了,创建了一个数据库:m69w.com,并创建了数据库用户m69w.com,
特别指定了该用户(m69w.com)只对m69w.com这个数据库的访问权限。
如此,便达到了我们一开始所讲的目的:为每一个数据库指定独立的用户访问权限。
我们可以看到,用户可以关了相应权限的数据库,而其他数据库都不可见
至此,数据库的创建和权限设置就完成了,最后我们可以用新用户登陆phpMyAdmin

MySQL忘记root用户密码或者root权限丢失解决




https://bandwagonhost.com/index.php
https://virmach.com/

vps安全设置:

ssh 登陆:

ssh root@127.0.0.1 -p 1234

改 root 密码

passwd root

输入两次密码<密码无显示>

如何知道自己的VPS账号正在遭受坏人的扫描和暴力破解呢?
简单的方法就是查看日志:cat /var/log/auth.log

改sshd端口

vi /etc/ssh/sshd_config
/etc/ssh/sshd_config

重启sshd服务:

/etc/init.d/sshd restart       #CentOS 6
systemctl restart sshd.service #CentOS 7

参考https://blog.csdn.net/doubleface999/article/details/73358003

检查端口

netstat -nlpt | grep ssh

安装Centos7下安装netstat

yum install net-tools

root是Linux下权限最大的一个用户,
而也是黑客最喜欢的一个用户,
若获取到了root权限,则代表了您的VPS完全陷落,
所以,将root用户禁止登录SSH,
使用另外一个用户来管理您的VPS将是一个很不错的主意。

首先添加一个用户

添加用户:

useradd 123

给新用户设置密码:

passwd 123

更改SSH

vi /etc/ssh/sshd_config

添加配置
AllowUsers root 123 #设置刚才创建的 123 可以登录
先把root也加上,不然登陆不了
重启下SSH

service sshd restart (/etc/init.d/sshd restart)
systemctl restart sshd.service #CentOS 7

限制su命令

vi /etc/pam.d/su

添加如下两行
centos 6

auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=isd

执行
usermod -G10 123
这样就只有 123 用户可以使用su命令了

centos 7
centos7用户权限设置 https://blog.csdn.net/qooer_tech/article/details/41802717

auth        required    /usr/lib64/security/pam_wheel.so   use_uid
auth        sufficient  /usr/lib64/security/pam_rootok.so  debug
auth        required    /usr/lib64/security/pam_wheel.so group=wheel

修改/etc/login.defs文件,在最后添加SU_WHEEL_ONLY yes
将新添加的普通用户添加的wheel组中,命令usermod -G wheel 用户名

123切换到root

su - root

然后输入 root 密码

禁止ping

防止别人Ping通自己的服务器是一个很不错的安全设置,运行命令
此文件开始为空

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

这样别人Ping自己的服务器时就根本无法Ping通了

systemctl restart iptables.service

使用密匙登陆SSH

在VPS上 输入指纹登陆
生成4096位密钥

ssh-keygen -t rsa -b 4096

将公钥拷贝至服务器对应用户的.ssh下,重命名为authorized_keys

cat id_rsa.pub >> authorized_keys

scp -P xxxxx ~/.ssh/id_rsa.pub server:/root/.ssh/authorized_keys

如果已经存在authorized_keys,需要将公钥追加至authorized_keys

scp -P xxxxx ~/.ssh/id_rsa.pub server:/root/.ssh/tmp.pub
# 在服务器端执行
cat /root/.ssh/tmp.pub >> /root/.ssh/authorized_keys

ssh 登陆 设置Putty SSH使用密钥登录Linux VPS主机

禁止使用密码登陆

vim /etc/ssh/sshd_config
PasswordAuthentication no

若报错

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

删除~/.ssh/known_hosts文件

rm ~/.ssh/known_hosts

检查登录日志

如果你的服务器一直很正常,那也可能不正常的表现,
最好的办法就是定期查询ssh的登录日志,手动发现系统的异常!

vim /etc/ssh/sshd_config
add LogLevel DEBUG

查看最近100条登录日志

tail -100 /var/log/secure

登录成功日志

who /var/log/wtmp
last

参考:
CentOS(5.8/6.4)linux生产环境若干优化实战
基于CentOS系统的VPS安全设置与优化

ubuntu

sudo apt-get update
apt-get install htop
apt-get install unzip

apt-get -y install wget screen

centos
yum install -y unzip zip

cp -Rf /home/user1/* /root/temp/
将 /home/user1目录下的所有东西拷到/root/temp/下而不拷贝user1目录本身。
即格式为:cp -Rf 原路径/ 目的路径/

1024以下端口需要管理员权限

增强VPS 安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击

洛杉矶MC
目前阿里新加坡的性价比最高

说实在的vultr牌子虽然比瓦工大,稳定性还是瓦工靠谱
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
自己测一测就知道了,不管超兽多少,是否正在搞促销,瓦工的io根本不崩

BandwagonHost搬瓦工

原来的域名 被墙后启动 备用域名

原官方网页隐藏优惠码(F12)(现在找不到了)
目前,BandwagonHost最新优惠码如下:
1、IAMSMART5K717Q (4%)
2、IAMSMART5EM2BR(4.28%)
3、IAMSMART5C48JJ(4.7%)
4、IAMSMART5SS6ML(4.72%)
5、IAMSMART5GRNII (4.82%)
6、IAMSMART5EL5BM(4.96%)
7、IAMSMART5FQ956 (5%)
8、BWH1ZBPVK(6%)
9、BWH26FXH3HIQ (6.25%)
10、BWH34QMFYT2R(6.38%)

SPECIAL PROMOCODE: IAMSMART5FQ956 - 5% Recurring Discount(5% Recurring Discount)
Bandwagonhost Promotional Code BWH1ZBPVK - 6% Recurring Discount

点我购买KVM 512M 500M/Month $18.99/Year 6 Locations
搬瓦工 CN2 两个机房的选择:DC3 和 DC8 哪个好?

https://justhost.ru/hosting/

瓦工我走自己的AFF没效果。
购买IP和你的账号Ip 要不一样,付款PP和收款PP也不一样

搬瓦工怎么选CN2?
dc3和dc8

SPECIAL为固定机房套餐,分CN2、CN2 GIA、香港三种线路
VZ - PROMO为OpenVZ可换机房套餐、 KVM - PROMO为KVM可换机房套餐,可切换到CN2,但流量变为1/3

搬运工信息

Other VPS

https://virmach.com/special-offers
https://billing.virmach.com/cart.php?gid=22
https://bwh1.net/aff.php?aff=1830&pid=43 bwh1
https://bwh8.net/aff.php?aff=1830&pid=43 bwh8

[经验] 教程:如何更早地发现商家的优惠

https://miao.hu/2017/04/15/fuck-gfw

http://iytc.net/bwg/index.php

续期
2021年4月10日
包年包月2021-02-05 10:10:51到期


转载于:使用Linux VPS(Centos)搭建公共DNS解析服务器


inux安装dnsmasq搭建dns公共解析服务器

安装环境Centos 6 x86

首先,我们需要安装dnsmasq。安装指令如下:

yum install dnsmasq

下面我们就需要配置DNSMASQ了,配置文件一般位于路径/etc/dnsmasq.conf。
基本上配置文件内容如下所示:

# /etc/dnsmasq.conf
# Set up your local domain here
domain=raspberry.local
resolv-file=/etc/resolv.dnsmasq
min-port=4096
server=8.8.8.8
server=8.8.4.4
# Max cache size dnsmasq can give us, and we want all of it!
cache-size=10000
# Below are settings for dhcp. Comment them out if you dont want
# dnsmasq to serve up dhcpd requests.
# dhcp-range=192.168.0.100,192.168.0.149,255.255.255.0,1440m
# dhcp-option=3,192.168.0.1
# dhcp-authoritative

这里的server所指示的就是上级DNS服务器的地址,这里用的是Google的8.8.8.8和8.8.4.4,
也就是说本地缓存查不到的域名将会发送给上级DNS服务器然后本地再缓存结果,
可以改成你所需要的,一般就用谷歌的,我就不改了:-)

如果你改动过设置,请重启服务:

sudo service dnsmasq restart

到这里基本上就配置完成了,你可以在VPS上nslookup或者dig一下看看结果,当然如果找不到这些命令是因为你没有安装dnsutils,直接通过下面的命令安装即可:

sudo apt-get install dnsutils

这里再讲解一个小技巧,大家电脑上的hosts文件一般不陌生,在DNS被投毒污染或者我们需要配置测试Web服务器时会要改这里的域名和IP对应关系,这里我们可以让dnsmasq替我们代劳。切换到/etc/dnsmasq.d/路径下,新建一个test.conf文件,内容如下:

address=/appspot.com/74.125.155.141

别忘了重启一下服务:

sudo service dnsmasq restart

这样当查询appspot.com的时候,dnsmasq将直接返回这里设定的IP地址,轻松避免了DNS投毒攻击。



转载于:https://b.lxd.cc/Tetris_Worlds.html


这可能是史上最短小精悍的javascript编写的俄罗斯方块游戏,因为它仅仅只有60行代码,就实现了俄罗斯游戏所有经典:随机形状、变形、加速、消除。键盘方向键控制,上箭头变形,你要试一试吗?

GO!点击运行代码开始游戏!

<!doctype html><html><head></head>
<body>
<div id="box" style="width:252px;font:25px/25px 宋体;background:#000;color:#9f9;border:#999 20px ridge;text-shadow:2px 3px 1px #0f0;"></div>
<script>
var domain="domain";
var author="author";
var map=eval("["+Array(23).join("0x801,")+"0xfff]");
var tatris=[[0x6600],[0x2222,0xf00],[0xc600,0x2640],[0x6c00,0x4620],[0x4460,0x2e0,0x6220,0x740],[0x2260,0xe20,0x6440,0x4700],[0x2620,0x720,0x2320,0x2700]];
var keycom={"38":"rotate(1)","40":"down()","37":"move(2,1)","39":"move(0.5,-1)"};
var dia, pos, bak, run;
function start(){
    dia=tatris[~~(Math.random()*7)];
    bak=pos={fk:[],y:0,x:4,s:~~(Math.random()*4)};
    rotate(0);
}
function over(){
    document.onkeydown=null;
    clearInterval(run);
    alert("GAME OVER");
}
function update(t){
    bak={fk:pos.fk.slice(0),y:pos.y,x:pos.x,s:pos.s};
    if(t) return;
    for(var i=0,a2=""; i<22; i++)
        a2+=map[i].toString(2).slice(1,-1)+"<br/>";
    for(var i=0,n; i<4; i++)
        if(/([^0]+)/.test(bak.fk[i].toString(2).replace(/1/g,"\u25a1")))
            a2=a2.substr(0,n=(bak.y+i+1)*15-RegExp.$_.length-4)+RegExp.$1+a2.slice(n+RegExp.$1.length);
    document.getElementById("box").innerHTML=a2.replace(/1/g,"\u25a0").replace(/0/g,"\u3000");
}
function is(){
    for(var i=0; i<4; i++)
        if((pos.fk[i]&map[pos.y+i])!=0) return pos=bak;
}
function rotate(r){
    var f=dia[pos.s=(pos.s+r)%dia.length];
    for(var i=0; i<4; i++)
        pos.fk[i]=(f>>(12-i*4)&15)<<pos.x;
    update(is());
}
function down(){
    ++pos.y;
    if(is()){
        for(var i=0; i<4 && pos.y+i<22; i++)
            if((map[pos.y+i]|=pos.fk[i])==0xfff)
                map.splice(pos.y+i,1), map.unshift(0x801);
        if(map[1]!=0x801) return over();
        start();
    }
    update();
}
function move(t,k){
    pos.x+=k;
    for(var i=0; i<4; i++)
        pos.fk[i]*=t;
    update(is());
}
document.onkeydown=function(e){
    eval(keycom[(e?e:event).keyCode]);
};
start();
run=setInterval("down()",400);
</script>
</body>
</html>

转自:手机访问电脑版自动跳转手机版代码


手机访问电脑版自动跳转手机版代码

<script type="text/javascript">
//手机跳转
var browser = {
    versions: function() {
        var u = navigator.userAgent;
        var app = navigator.appVersion;
        return {
            trident: u.indexOf('Trident') > -1,
            presto: u.indexOf('Presto') > -1,
            pwebkit: u.indexOf('AppleWebKit') > -1,
            gecko: u.indexOf('Gecko') > -1 && u.indexOf('Khtml') == -1,
            mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/),
            //是否为移动终端
            ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
            //ios终端                
            android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
            //android终端或者uc浏览器                
            //iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器                
            iPhone: u.indexOf('iPhone') > -1,
            //是否为iPhone或者QQHD浏览器                
            iPad: u.indexOf('iPad') > -1,
            //是否iPad                
            webApp: u.indexOf('Safari') == -1
            //是否web应该程序,没有头部与底部 

        };

    } ()

}
var argStr = location.search;
if (browser.versions.iPhone || browser.versions.android) {
    //用手机浏览
    if (argStr == "")
    {
        window.open('http://lxd.mobi/', '_self', '', 'true');

    }

}
</script>

电脑访问手机版自动跳转电脑版

<script type="text/javascript">
var browser={
    versions:function(){
        var u=navigator.userAgent;
        var app=navigator.appVersion;
        return{
            trident:u.indexOf('Trident')>-1,
            presto:u.indexOf('Presto')>-1,
            pwebkit:u.indexOf('AppleWebKit')>-1,
            gecko:u.indexOf('Gecko')>-1&&u.indexOf('KHTML')==-1,
            mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端
            ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端                
            android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器                
            //iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器                
            iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器                
            iPad: u.indexOf('iPad') > -1, //是否iPad                
            webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 
            };
        }()
    }
    
    
    var argStr=location.search;
    
    if(browser.versions.iPhone||browser.versions.android){
        //window.open('phone.html','_self','','true');
    }
    else
    {
        if(argStr=="")
        {
            window.open('http://www.lxd.cc/','_self','','true');
        }
    }</script>


自从用了typecho,主题一直换
用过cho,bytecats,Material Theme...
现在用的是由清馨雅致基于绛木子仿简书主题最新版修改的JianShu变异版1.2
前几天更新了一下发现原主题手机版缺少pull-right导致手机版没有转换黑白log
header.php的135行
原:<a class="set-view-mode" href="javascript:void(0)">
修改后:<a class="set-view-mode pull-right" href="javascript:void(0)">
另外个人使用就还改了几个地方:
1.default.css的1389行开始注释

/*-webkit-border-radius: 50%;*/
/*-moz-border-radius: 50%;*/
/*border-radius: 50%;*/

主要是gototop的logo在一些浏览器中显示是一个框框,索性就不要了
2.评论区的提交评论和gototop在手机版上有点重叠:
default.css
1381行:right: 20px;
1383行:bottom: 30px;
3.代码高亮部分在highlight.css
19行color:beige;
156行color:white;
4.还有左侧的背景图片去掉了,加载不给力