tlanyan

tlanyan 查看完整档案

广州编辑  |  填写毕业院校  |  填写所在公司/组织 tlanyan.me 编辑
编辑

个人博客: https://tlanyan.me

个人动态

tlanyan 发布了文章 · 4月26日

redis批量删除key

转载请注明原文:https://tlanyan.me/redis-batch-delete-keys

由于误用插件,某台服务器的redis实例存在数百万无用的key。为了删除无用数据,上网查找redis批量删除key的方法,发现使用过程中都有问题。经过本人的研究,终于找到redis批量删除key的正确用法。本文分享最新版Redis批量删除key的方法,希望能帮到遇到同样问题的网友。

redis批量删除key

网上许多文章和教程给出的redis批量删除key命令是:

redis-cli KEYS "$PATTERN" | xargs redis-cli DEL

在本人的情况中,这条命令存在两个问题:

  1. redis-cli KEYS "$PATTERN"的结果会出现编号,不是纯粹的key列表,如下所示:

    [root@node1]# redis-cli keys "*"

    1. ":default:is_blog_installed"
    2. ":site-options:1-notoptions"
本人用的是Redis 5版本,未测试低版本Redis是否也会添加1),2)这样的编号。可以想到,因为编号的存在,管道后DEL删除的key就不对;
  1. 如果key存在空格,管道后面的DEL将无法正确删除key。例如key是"123 4566",传送到管道后面删除,就变成了删除两个key,与预期不符合。

经过一番研究,本人找到redis批量删除key的正确命令是:

redis-cli --raw KEYS "$PATTERN" | xargs -I {} redis-cli DEL "{}"

重点有两个,分别解决上述命令存在的问题:

  1. 使用 --raw 参数,去掉结果编号;
  2. xargs使用占位符,删除key时将整个结果传过去,避免了空格问题。

改正后的命令在本人的情况下运行正常,就是删除两百多万个key有点慢,花了半个多小时。

redis批量移动key

如果你知道有用key的模式,并且有用key数量很小,可以通过redis批量移动key,然后flushdb的方法快速删除,效率比上文提到的批量删除大量无用key高很多。

操作方法如下:

  1. 批量移动key:redis-cli --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 1,其中命令最后的1是备份数据库的编号;
  2. 清空当前数据库:redis-cli flushdb
  3. 还原key:redis-cli -n 1 --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 0

注意清空当前数据库的命令是 flushdb,不能用 flushallflushdbflushall的区别是:flushdb 只会清空当前数据库的数据,而flushall会清空当前redis实例的所有数据。

redis-cli参数

上述命令使用redis-cli工具完成,在编号为0的默认数据库上操作。对于需要密码、远程redis主机的情况,redis-cli有如下有用参数:

-n:操作的数据库;

-a:redis数据库密码

-h:redis主机ip,通过-h可以远程批量删除key

-p:redis端口

更多参数请参考帮助文档。

参考

1. Quickly move and delete Redis keys by pattern

2. [How to atomically delete keys matching a pattern using Redis](https://stackoverflow.com/questions/4006324/how-to-atomically-delete-keys-matching-a-pattern-using-redis target=)

查看原文

赞 2 收藏 1 评论 2

tlanyan 发布了文章 · 4月26日

谨慎购买不退款商家的VPS

一些VPS商家整理 文中所言,买服务器一定要仔细看商家服务条款(TOS),特别注意退款政策。本人今天盲目信任之前的商家印象,买了一款用起来浑身难受,但不能退款的服务器,非常蛋疼。本文简要介绍事情经过,希望大家买服务器时引以为戒,谨慎购买不退款商家的VPS

2020.04.24更新:今天早上多次测试,发现网络正常,说明昨晚网速慢和抗D无关,是线路带宽小,晚高峰炸的厉害。

事情经过

前不久本站受到DDoS攻击(详情参考 本站近期发生的几起安全事件),产生了买高防服务器的想法。今天逛论坛看到CN2路线可能要涨价的消息,觉得还是早点买好:

cn2可能会涨价

碰巧看到 HKServerSolution 有高防服务器优惠,配置价格看起来很给力:圣何塞VDS、2核2GB内存、20G SSD、750G单向流量、30M带宽、50G防御、三网回程CN2 GIA、年付$84.64(人民币599)、适合做站。

本人之前听说HKServerSolution,但一直没用过,原因当然是这家的服务器很贵,几乎没有月付100以下的服务器。这家走高端路线,服务器价格是许多商家的好几倍,优点则是从不超售(卖那么贵,不超售也能赚钱),服务器和线路很稳定。

出于对HKServerSolution印象的好感,加上回程三网GIA确实很诱人,还有50G防御,决定入手这一款,并且买的年付。没想到,这是花钱买让自己蛋疼的开始。

入手之后,例行 yum update -y 更新系统,发现网速不对劲。刚开始以为yum源的问题,后来觉得应该不可能,就单纯测试网络,发现果然是网络太慢了!咨询商家客服,入网带宽是30M,但高防模式一直开启,所以入网很慢:

与商家客服聊天

根据客服描述,可能是ipv6或者系统模板造成入网很慢。于是本人试过禁用ipv6,把系统重装成CentOS 7,问题依旧。好不容易装上Nginx测试出网,发现峰值能跑到3MB/s,平均能保持1MB/s左右,商家这点没骗人。

出网速度正常,但是入网速度真的很蛋疼。买了那么多服务器,第一次遇到这么蛋疼的服务器,敲个命令要等半小时!

服务器下载速度很慢

感觉用这机器能把我弄疯,于是想到退款。接着去看商家的TOS,没想到HKServerSolution竟然不允许退款:

HKServerSolution退款政策

不退款没办法了,只好将就着用吧。其他机器上十来分钟就能部署好环境,这家机器上折腾了两个多小时才弄好,大部分时间都花在下载上面,蛋疼无比。

经验教训

这件事情主要怪我事先没看TOS,要是知道不能退款,就不会直接年付。不过本人认为HKServerSolution也有一些槽点:

  1. 产品价格很贵,但用户没得到贵该有的服务,比如不能退款,回复也很慢;
  2. 服务器写着30M带宽,但经本人各种测试,入网带宽几乎不会超过300KB/s,购买页面没有说明。

从这件事得到的两点深刻教训:

  1. 买产品之前要仔细阅读服务条款,特别要注意产品使用限制(能否上外网、挂PT等)和退款政策;
  2. 一定要谨慎购买不退款商家的VPS,建议先月付尝试,好用再年付。

这是第一次购买HKServerSolution的机器,不清楚其他机型是否也是这种情况(个人感觉应该不会)。不过这家的服务政策是这样,想买还是谨慎点。

另外一个小经验:(基本上)国人商家才有不退款政策,国外商家一般都提供限期退款保障,不满意可无条件退款(机器、ip没玩坏的情况下)。

查看原文

赞 0 收藏 0 评论 0

tlanyan 发布了文章 · 4月6日

macOS 10.15.4 ssh无法连接解决办法

原文:macOS 10.15.4 ssh无法连接解决办法

今天早上醒来,发现Mac自动安装了最新版的macOS,也就是Catalina 10.15.4。上午用着挺好,没什么异常。下午登录服务器,发现无法连接。用"-v"选项查看ssh连接调试信息,到"connecting"就不动了:

OpenSSH_8.1p1, LibreSSL 2.7.3
debug1: Reading configuration data /Users/tlanyan/.ssh/config
debug1: /Users/tlanyan/.ssh/config line 20: Applying options for node1
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for *
debug1: Connecting to node1 port 12345

上网查了一下,几天前就有人遇到这个问题。本人升级新系统较晚,因此今日才发现。

经过本人组合测验,终于找到问题原因所在,本文给出macOS 10.15.4 ssh无法连接解决办法。

ssh无法连接解决办法

遇到同样问题又不想看废话的网友,请打开终端安装 openssh 以解决该问题:

# 未安装brew请先安装:
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew install openssh

安装完后,打开一个新窗口,ssh -V 应该输出如下:

OpenSSH_8.2p1, OpenSSL 1.1.1f 31 Mar 2020

再用ssh连接服务器,会发现问题已经解决。

解决历程

刚发现ssh无法连接到服务器,心里一凉:服务器上托管着网站,不会服务器挂了吧?转念一想觉得不可能,网站有监控呢,挂了肯定会报警。浏览器打开网站,一切正常。但是返回iTerm2用ssh连接服务器,还是不通。尝试其他几个服务器,情况一样。

想着会不会是设置了代理的问题?关掉代理软件,果然ssh正常连接到服务器。但不用代理软件是不可能的,为了找出原因并解决,陆续做了如下尝试:

  • 分别用iTerm2和系统自带终端,都不能连接,说明不是iTerm2的问题;
  • 查看环境变量,确认没有设置http_proxy等影响工作的环境变量;
  • 切换zsh和bash,问题依旧,说明和shell没关系;
  • 切换代理软件PAC和全局模式,全局模式能正常连接,说明PAC的某个设置影响了ssh的正常工作;
  • PAC模式下用curl、wget、telnet等软件,工作正常,只有ssh工作异常;
  • 把主机名换成ip,能正常连接到服务器;
  • 把主机名换成域名,无法连接。

以上种种情况说明,升级到macOS 10.15.4后,ssh确实受到了影响,无法连接到主机别名、域名的服务器,ip方式则不受影响。

ssh是系统内置软件,ssh -V 查看版本信息:

OpenSSH_8.1p1, LibreSSL 2.7.3

想着用brew安装openssh会不会好点呢?于是果断 brew install openssh,安装完后打开新终端,问题解决!

总结

升级到macOS 10.15.4后,如下两种情况的ssh使用不会受到影响:

  1. 用ip连接服务器的;
  2. 之前就已经用openssh客户端的。

如果你用着系统内置的ssh,并像我一样喜欢用别名或者域名连接服务器,安装openssh是问题的终极解决办法。当然,如果不嫌麻烦,连接的时候关闭代理也是出路。

参考

1. So, uh, I think Catalina 10.15.4 Broke SSH?

查看原文

赞 0 收藏 0 评论 0

tlanyan 发布了文章 · 4月6日

翻译po文件并转换成mo文件的三种办法

转载自:翻译po文件并转换成mo文件的三种办法

.po和.mo文件是WordPress中语言相关的两种文件。po 是Portable Object(可移植对象)的缩写,存放待翻译的字符串信息,可直接用文本编辑器打开编辑;mo 是Machine Object的缩写,二进制文件,程序运行时从mo文件查找字符串的翻译。

本文介绍翻译po文件并转换成mo文件的三种办法。

Poedit

Poedit是一个跨平台、功能强大的po文件翻译软件,本人刚接触WordPress时翻译文本用的就是Poedit。Poedit支持安全检查,防止翻译过程中漏掉关键的"%"。打开po文件,翻译完成保存后会自动生成.mo文件,将其上传到WordPress对应的languages文件夹即可。

Poedit

https://po2mo.net/

.po文件是文本文件,因此可以用vs code等文本编辑器打开和编辑。如果不想安装类似Poedit的软件,翻译完后可以上传到 https://po2mo.net/,通过在线服务转换成.mo文件。

po2mo

msgfmt

习惯了Linux和vim,安装软件和网页版在线转换服务都不如敲命令转换来得直接。幸运的是,GNU getext 是Linux系统自带的核心文本工具之一,提供 msgfmt 命令将.po文件翻译成.mo文件:

msgfmt -o xxxx.mo xxxx.po

GNU getext 包还提供 msgunfmt 命令将.mo文件转换成.po文件:

msgunfmt -o xxxx.po xxxx.mo

参考

1. GNU gettext工具简介

2. Compile PO files to MO files

查看原文

赞 1 收藏 1 评论 0

tlanyan 发布了文章 · 4月6日

Linux查看网络流量

文章原文:Linux查看网络流量

作为一个非职业运维,不时需要查看Linux服务器上的网络流量状况。本文介绍几个常用的Linux查看网络流量命令,并简要介绍其用法。部分命令系统已经内置,某些命令则需要从软件仓库或者自行编译安装,本文以CentOS系统为例介绍软件安装方法。

查看总流量

ip

ip 命令来自 iproute2util 包,是查看、配置网络/路由的工具。作为 ifconfig 的替代品,ip 命令功能更强大,用法更语义化。

ip命令在大多数系统上都已经默认安装,也可通过 yum install -y iproute 安装。ip 的 "-s -h" 参数查看各网卡的总流量,下图是 ip -s -h link 的输出结果:

ip命令输出结果

nload

nload 命令可以查看各个网络设备的当前网络速率,也会展示流经设备的总流量。

nload 来自EPEL软件库,CentOS安装命令为:yum install -y epel-release && yum install -y nload。查看eth0网卡流量 nload eth0命令输出如下:

nload查看网络流量

PS:netstat -sifconfig -s 都可以查看收发的总包(netstat分协议给出),但不会给出字节数据。

查看实时网速网速

nload 命令可以输出当前网速,上面已经介绍过,本节不再赘述。

dstat

dstat 是一个用来替换vmstatiostatnetstatnfsstatifstat的全能系统信息统计工具,支持数据实时刷新,输出直观易懂。

dstat 默认没有安装,安装命令为:yum install -y dstatdstat -tnf 1 10 输出接下来10秒内每秒的网络数据:

dstat输出

sar

sar 是System Activity Report的缩写,是一款全面的Linux系统运行状态统计和性能分析工具,可从磁盘IO、CPU负载、内存使用等多个维度对系统活动进行报告。

sar 命令来自 sysstat 包,可使用这个命令安装:yum install -y sysstatsar -n TCP 1 10可查看接下来10秒内的tcp数据:

sar查看tcp数据

查看连接/进程流量

ss/netstat

ssnetstat 是查看活动链接/监听端口的常用命令。ssnetstat 的替代,性能更好,建议使用。

ssiproute2util 包的一部分,因此在大多数系统上默认安装,也可通过yum install -y iproute安装。netstat 来自 net-tools 包,新版系统上需要自行安装:yum install -y net-tools

下图是用ss查看tcp连接的输出:

ss查看tcp连接

iftop

iftop 是一款实时流量监控工具,可以查看每个连接的实时速率。

iftop 来自EPEL软件库,安装命令是:yum install -y epel-release && yum install -y iftopiftop -nN -i eth0实时查看eth0网卡的各个连接和网速:

iftop查看实时网速

nethogs

nethogs 是为了查看单个进程流量而设计的工具,按照进程进行带宽分组。

nethogs 来自EPEL软件库,安装命令是:yum install -y epel-release && yum install -y nethogsnethogs -d 2 eth0 每2秒刷新流经eth0网卡的进程流量信息:

nethogs输出

其他

tcpdump可以用来抓包,保存的数据可以用wireshark打开和查看。

参考

1. Linux sar命令详解

2. 30 Linux System Monitoring Tools Every SysAdmin Should Know

查看原文

赞 1 收藏 1 评论 0

tlanyan 发布了文章 · 3月29日

买VPS,CPU和内存哪个重要?

转载请注明出处:买VPS,CPU和内存哪个重要?

许多新手,包括之前的我,买VPS时总有一个疑问:CPU和内存哪个重要?哪个对系统的性能影响更大?

CPU和内存哪个重要?

内存比CPU重要

永远不会错的答案是:分用途和场景。然而根据本人多年的测试和实践,得出的答案是:绝大部分情况下内存比较重要,尽量购买内存大/内存主频高的VPS

得出这样一个结论,有以下依据支持:

  1. 本人之前跑科学计算程序,同样的编译参数,2.2G CPU、1600MHz DDR3内存的Mac笔记本竟然比3.5G CPU、1333MHz DDR3内存的服务器运行更快。该程序不涉及到硬盘读写,只用到CPU和内存,(大概率)说明快的内存可能比高主频的CPU更重要(程序为memory-bounded型);
  2. 本人见过很多个人或小企业建网站,上来就买4核8G的服务器。然而大半年过去了,网站的日ip仅有寥寥几十不到百,白白浪费钱;本人也见过1核1G内存搭配swap的VPS,配置好缓存后,稳稳承载日ip上万的网站;查看系统状态,除了内存紧张,cpu大多时间都比较空闲;
  3. cpu性能不够,最多只是慢;内存(加swap)不够,那可是会让服务崩盘的。内存不够时,OOM killer大概率就先把数据库、Redis等重要服务杀死,然后服务就GG了。前几天很火的新闻:Redis 官网昨日宕机,错误提示为无法连接 Redis,就说明内存有多重要;
  4. 即使是很多密集计算型的场合,内存过小也会严重限制cpu发挥,从而影响整体性能。

总结起来就是:绝大部分场景,内存才是限制系统性能的主要因素,而cpu一般都是性能过剩。

因此,用来托管网站、后台程序的VPS,个人推荐cpu内存比至少是1:1,即1核1G,2核2G等;1:2是比较合适的,即1核2G,特殊情况可以考虑1:4或者1:8的VPS。

CPU比内存更重要的场景

也有一些场景,CPU比内存更重要,需要配置性能强劲的CPU。本人能想到的场景有:

  1. API网关、防火墙、路由器等流量入口的服务器,要对流量做密集计算、校验、转发,CPU不强那肯定是不行的;
  2. 只用做流量转发、网络代理的服务器,其实和前一条类似,CPU必须要强,内存够用就行,至于硬盘,基本上用不到;
  3. 密码爆破、挖坑等算力比拼的场景,CPU不给力那就没得玩了。

如果你出于这些需求买服务器,优先考虑CPU吧。例如很多 NAT VPS,2核cpu配258m/384m内存,但做中转已经完全够用了。

总结

分场景买合适配置的VPS,这句话总是不会错。除了上面说的,还有不少特殊场景要单独考虑。例如对于下载服务器,大带宽VPS 就比内存和CPU更重要;而存储型服务器,硬盘容量就应该优先考虑。

至于本人,买VPS一般是做网站、应用程序后端等用途,考虑因素如下:内存大小、硬盘速度、带宽/流量,最后才是CPU。大内存的VPS,可以做搭建网站、内网穿透Gitlab托管 等多种用途,同时花费更低。

参考

1. What makes a computer fast and powerful?

2. 一些VPS商家整理

3. WordPress性能优化

查看原文

赞 1 收藏 1 评论 0

tlanyan 发布了文章 · 3月29日

WordPress一键脚本

原文出处:WordPress一键脚本

不时要帮朋友搭建WordPress博客,今天抽空写了CentOS7/8系统的WordPress一键脚本,方便今后使用。

WordPress一键脚本

一键脚本用法如下:

wget https://raw.githubusercontent.com/tlanyan/Scripts/master/wordpress.sh && bash wordpress.sh

按照提示输入域名,脚本会自动安装PHP、MariaDB等必备软件,最后输出如下配置信息:

WordPress安装成功!
===============================
WordPress安装路径:/var/www/test.tlanyan.me
WordPress数据库:wordpress
WordPress数据库用户名:wordpress
WordPress数据库密码:WtNUR6avj0sKaMl9
博客访问地址:http://test.tlanyan.me
===============================

注意事项

1. 脚本适合在裸机/新机器上执行,建议配置为1c1g及以上配置,并开启swap;

2. 脚本安装最新版的PHP 7.4、MariaDB 10.4。其中MariaDB无需root密码,以root身份执行mysql即可登录获取root权限;

3. 脚本参照 WordPress性能优化 对程序做了整体优化,包括使用Redis存储session,Nginx启用fastcgi_cache、gzip功能,PHP开启Opcache优化、安装BBR。

4. 脚本没有开启和配置https,如需开启请参考 使用Let's Encrypt获取免费证书

5. 请将域名解析到vps的ip,打开博客网址即进入博客安装配置界面,填写必要信息后,一个崭新的博客就此开启!

查看原文

赞 2 收藏 1 评论 0

tlanyan 发布了文章 · 3月22日

CentOS 8同步时间

转载请注明文章出处:CentOS 8同步时间

CentOS 8系统做了不少更新,例如 nftables代替iptables、dnf代替yum成为默认包管理工具。这不,许多人发现CentOS 7熟悉的 ntpdate 命令没有了,也不能用yum安装上,同步时间顿时成了一个难题。

本文介绍CentOS 8使用chrony同步时间。

chrony介绍

Chrony是一个开源软件,能用来于时钟服务器(NTP)同步,从而保持系统时间精确。chrony由两部分组成:后台运行的chronyd,前端使用的chronyc。chronyd用于调整内核中系统时钟和时钟服务器同步,它确定计算机增减时间的比率,并对此进行补偿;chronyc提供查询和配置接口,可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

chrony同步时间

首先安装crhony:

dnf install -y chrony
# 也可以用yum安装
yum install -y chrony

chrony配置文件是 /etc/chrony.conf,其内容大体如下:

chrony配置文件

一般来说,配置文件无需改动就能正常使用。当然为了同步速度快,可以使用国内的ntp服务器,例如将第一行改成: pool ntp.ntsc.ac.cn iburst(公共ntp服务器请参考:公共 NTP 服务器地址大全)。

接下来可以手动同步时间:

chronyd -q 'server ntp.ntsc.ac.cn iburst'
# 输出如下
2020-03-13T09:44:30Z chronyd version 3.5 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
2020-03-13T09:44:30Z Initial frequency -25.473 ppm
2020-03-13T09:44:34Z System clock wrong by -0.000340 seconds (step)
2020-03-13T09:44:34Z chronyd exiting

更好的方式是让chronyd后台运行,自动同步时间:

systemctl enable chronyd
systemctl start chronyd

注意:chronyd服务启动后,不能再用chronyd方式手动同步时间,会报“Fatal error : Another chronyd may already be running”的错误。

chronyc tracking命令可以查看同步状态(需要chronyd服务在运行):

Reference ID    : 771CE546 (119.28.229.70)
Stratum         : 3
Ref time (UTC)  : Fri Mar 13 09:49:25 2020
System time     : 0.000000666 seconds slow of NTP time
Last offset     : +0.000767246 seconds
RMS offset      : 0.000767246 seconds
Frequency       : 25.561 ppm slow
Residual freq   : -117.006 ppm
Skew            : 6.375 ppm
Root delay      : 0.014839342 seconds
Root dispersion : 0.026745666 seconds
Update interval : 1.2 seconds
Leap status     : Normal

chronyc sources命令可以查看同步的时间服务器(需要chronyd服务在运行):

210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- time.cloudflare.com           3   6    17    87  -4121us[ -750us] +/-   44ms
^* 119.28.229.70                 2   6    37    23   +557us[+3930us] +/-   21ms
^- undefined.hostname.local>     2   6    37    23  -2976us[ +398us] +/-   80ms
^- 203.95.213.129                2   6    17    87    -22ms[  -18ms] +/-  162ms

其他

  1. 如果还是希望使用 ntpdate,请参考这篇文章安装:CentOS8.0通过yum安装ntp同步时间

参考

  1. How to Sync Time in Linux Server using Chrony
  2. 公共 NTP 服务器地址大全
  3. chrony概念详解
查看原文

赞 1 收藏 1 评论 0

tlanyan 发布了文章 · 3月9日

NAT VPS的正确食用方式

原文:NAT VPS的正确食用方式

什么是NAT VPS

NAT VPS是共享同一个公网ip(v4)地址,通过端口映射方式与外界通信和提供服务的VPS。NAT VPS的主要缺点是能使用的端口有限制,一般十个左右,并且大多数商家不允许选择端口号。但NAT VPS有它盖不住的优点:便宜。NAT VPS省去了ip费用,带宽也是共享的,价格一般比普通vps要便宜不少。

经过一段时间的折腾,本人在NAT VPS使用上也算小有心得,故而写下本文给出NAT VPS的正确食用方式,并介绍一些NAT VPS商家。

NAT VPS的正确食用方式

根据本人折腾的经验,总结出NAT VPS有如下食用方式:

国内高速下载

希望给给用户提供高速下载,一般的选择是要么买CDN分发服务,要么买大带宽服务器。因为国情限制,这两种方式的成本都很高。

有了NAT VPS,玩法就不一样了。昂贵的ip和带宽成本可以分摊到许多台机器上(理论上多达六万台),因此可以用廉价的方式在 共享带宽 下提供高速下载。例如使用 CloudIPLC的移动联通电信 的NAT VPS,每个月几十块钱,就可以提供国内高达12MB/s的下载速度,流量也不少,性价比远超用CDN和买普通大带宽服务器。

NAT VPS中转

因国内ip数量紧张,因此内网穿透的需求量也大。本人之前用 树莓派安装nextcloud搭建私有云,为了在外也能随时访问,额外使用了一台有公网ip的vps搭配frp才完成。

有了NAT VPS,中转的成本可以降下一大截,带宽也不低于云厂商vps的带宽,用起来真是美滋滋。网上有不少付费内网穿透服务,花那个钱不如买一台NAT VPS,既能达到同样效果,还能多一台vps用,何乐而不为?

其实许多NAT VPS的主要用途就是中转。这些NAT VPS的硬盘和内存比较小,反而cpu配置高(512MB内存配2核cpu),并且出国线路做了优化,就是为了方便中转流量。IPLC VPS是中转用途NAT VPS的高端货,价格贵,优点是超低延迟,流量不被审查,比CN2 GIA线路更强大。

如果你有内网穿透、出国加速的需求,NAT VPS是非常好的选择。

NAT VPS存储/在线网盘

一些VPS厂商提供大容量VPS(俗称“大盘鸡”),非常适合做云端私人网盘。其中NAT大盘鸡价格都不贵,流量也管够,性价比很高。这类NAT VPS的缺点主要是机房基本在国外,国内连接速度没那么理想,详情可参考:云筏科技大容量大流量NAT VPS试用

NAT VPS建站

你没有看错,虽然NAT VPS没有公网ipv4地址,但也是可以用来建站的,并且支持常规的80和443端口访问。

NAT VPS可以通过如下两种方式建站:

1. VPS后台面板提供的建站功能,常见于国内NAT VPS厂商。强调一下,国内使用80端口最基本的前提条件是域名必须已备案

[caption id="attachment_6616" align="aligncenter" width="745"]NAT VPS建站 NAT VPS建站[/caption]

在后台管理面板点击“NAT建站”,接着点“创建站点”(每家的面板可能略有不同),弹窗中填写域名等信息。客服审核确认过域名已备案后,就能用http方式访问vps上搭建的网站。

[caption id="attachment_6617" align="aligncenter" width="750"]NAT VPS创建站点 NAT VPS创建站点[/caption]

如果希望网站支持https,还需要上传证书等操作。每家产品的操作界面不一样,本文不再做介绍。

80和443,是国内NAT VPS有限条件下可以使用的两个常规端口。如果你有备案域名,建议这种方式建站,成本低且国内访问快。

2. 通过cloudflare建站。国外许多vps厂商免费提供公网ipv6地址,因此可以通过cloudflare中转达到建站目的。具体操作是:

  1. NAT VPS部署好网站程序,同时放行ipv6地址的防火墙;
  2. 登录cloudflare,添加ipv6解析到vps的ipv6地址:[caption id="attachment_6618" align="aligncenter" width="665"]cloudflare设置ipv6解析 cloudflare设置ipv6解析[/caption]

    注意ipv6的记录是AAAA,proxy status必须选“Proxied”,即要有那朵黄云;

  3. 接下来就可以用域名直接访问你的网站了。

ipv6地址几乎没有成本,因此国外的厂商大都免费提供,某些厂商甚至一台vps提供几十上百个ipv6地址(例如魔方云)。国内因实名制、备案等各种畸形措施,极少数vps厂商提供ipv6,因此cf建站的方式不适用国内NAT VPS

NAT VPS商家列表

本节列出一些提供NAT VPS的商家供读者参考。

1. CloudIPLC从名字就可以看出,这家主营IPLC线路VPS,购买国内机器需要实名,官网:https://www.cloudiplc.com

2. UOvZ:国人vps商家,主营国内外vps,也提供独服、IPLC和NAT VPS。官网:https://www.uovz.com

3. 魔方云峰鸟科技旗下子品牌,主要运营香港、新加坡、洛杉矶机房CN2线路的高速VPS,也提供香港NAT VPS。官网:https://www.cubecloud.net

4. 云筏科技2019年成立的国人商家,国内业务主要是面向专业/科研领域的云计算、高性能计算,也提供虚拟主机、CDN服务;国外业务主要是大容量、大流量、高IO的KVM/NAT VPS,性价比很高。官网:https://www.cloudraft.cn

5. OLVPS:国内知名的NAT VPS商家,也提供OpenVZ和KVM VPS。原官网 t667.com 已被污染,目前可直接打开官网:https://olvps.com/

6. 异株湖国人新商家(请自行判断是否灵车),提供美国、香港安畅机房CN2线路VPS,也提供国内NAT VPS和挂机宝产品。无需实名,相对来说机器配置好,性价比高。官网:https://www.eve.bz

  1. 碳云国人商家,NAT VPS很出名,也提供VDS和游戏加速的游戏云,性价比很高。购买机器需支付宝人脸认证实名,略麻烦。官网:https://www.coalcloud.net/

参考

1. 使用NAT VPS的一点注意事项

2. 云筏科技大容量大流量NAT VPS试用

3. 大带宽大流量VPS商家汇总

查看原文

赞 2 收藏 1 评论 0

tlanyan 发布了文章 · 3月9日

使用nat vps的一点注意事项

原文:使用nat vps的一点注意事项

NAT VPS简介

什么是nat vps?从名字就可以想到,这些vps没有公网ip,而是nat内网机器,只能通过nat端口转发方式对外提供服务。多台nat vps共享一个公网ip,所以费用一般比配置公网ip的机器要便宜。nat vps的缺点主要是对外暴露的端口受限制(许多vps商家能用的外网端口号一万起),可用的端口数量也有限制(一般十到五十个)。

国内外有不少商家提供大宽带的nat vps,例如cloudiplcuovzolvps等。只提供国内大带宽的nat vps比较便宜,二三十每月起。用于沪日iplc、深港iplc专线的nat vps流量较贵,将近1元/GB。iplc线路的特点是号称不过墙,延迟低(沪日低于50ms),秒杀各种CN2,非常适合用来做转发。

事情经过

本站提供一些软件的本地下载,因近期下载人数太多,额外增加了三台服务器提供下载服务。考虑到下载速度的问题,前两天尝试用大带宽的nat vps提供高速下载服务。

之前有人对本人提供的下载服务有过攻击行为,具体表现为同一个ip几十上百个连接,下载同一个文件。本人不清楚他们为什么这么做,让访客的下载体验变差?但这里提供的下载服务都是公益的啊,也没有用防盗链的方式限制其他网站的人用。虽然没想清楚为啥攻击,不过还是按照 限制并发连接数 一文的方法对下载服务器的防火墙和nginx做了限制,该封的ip就封,该限制的ip就限制。

前天买好nat vps,部署nginx、设置端口转发后,也按照之前的方式在nginx上做了限制。投入使用前自己先简单做了测试,下载速度能达到6MB/s,与所说的100Mb端口相差不大。一切就绪后,开始切换流量对外服务。

昨晚登录到vps,用 netstat -nt 查看连接数,忽然发现对方连接地址不是用户的真实ip,而是nat vps网关的ip。意识到这点后,我发现了问题的严重性:nginx对ip限制了并发连接数,但目前拿到的ip都是同一个,也就是说同一时间最多只能有设定的n个人可以下载,其他人打开都会提示503错误。

打开nginx的error日志,果然一片错误:limiting connections by zone "XXX"。心想这下坏了,这都快上万个报错,说明一天内有有好几千个人从本站下载客户端,点进去后却发现提示503,一脸懵逼后只好退出再去其他地方找。

总结

因为第一次使用nat vps,只能说对前天进来下载但是失望的人说抱歉了。目前nat vps已经解除了ip的限制,稳定对外提供服务,希望能给访客带来高速的下载体验。

总结:nat vps看不到用户的真实ip,那些需要用到用户真实ip的业务,请谨慎,以免有意料外的影响。当然本人目前只用过一家nat vps,不清楚其他家是否也是这种情况。

查看原文

赞 1 收藏 1 评论 0

认证与成就

  • 获得 271 次点赞
  • 获得 2 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 2 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2017-05-29
个人主页被 1.3k 人浏览