Browsed by
分类:Internet技术

RFC4235与RFC7463

RFC4235与RFC7463

基本上两篇RFC文档是传承的关系,RFC7463场景应用比RFC4235要详细很多,一些旧的SIP设备未必支持7463。

在兼容性方面,对于SIP-SUBSCRIBE消息,两篇RFC文档采用了不同的Event,rfc4235中定义“dialog”,而rfc7463中定义“dialog;shared”。rfc4235限定在只订阅SIP呼叫对话的状态,因此在dialog-info中,要求必须填充dialog元素,其中就包含call-id,remote-tag以及local-tag等典型呼叫参数。

而rfc7463不仅仅是关注呼叫,更关注“状态呈现”,因此凡是与“状态”相关的消息,都尽量进行了定义。比如在“11.1. Registration and Subscription”章节中,就定义了终端注册的状态呈现。在注册流程中,就没有dialog的信息。

呈现信息多,对用户当然有好处,对VoIP系统也很有意义,尤其是在企业应用场景中。但是需要注意的是这也大大增加了VoIP系统的负荷,实际部署中要慎重考虑。

清除Putty主机指纹

清除Putty主机指纹

最近修改了主机上的公钥,结果导致Putty无法登录到主机,仔细检查后发现Putty还在使用原有的主机指纹,因此删除原有的记录即可(Putty似乎可以改进一下,重新提示用户是否保存或者修改,不是更合理吗?)。

删除方法比较简单,直接打开注册表,找到以下目录:

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys

然后删除对应的主机记录即可。

企业VPN设置的注意事项

企业VPN设置的注意事项

公司建立了自己的VPN网络用于内部系统接入和管理,出于成本和部署简化的考虑,采用了相对比较简单的PPTP-VPN方案。服务端采用Debian 8系统,客户端就直接是windows和Linux自带的PPTP拨号软件。由于是私有的网络,因此在配置上可以尽量简化、统一,去掉一些没有必要的协商环节。

Debian服务端配置

服务端只保留一种协议(即MS-CHAP v2),同时强制要求MPPE-128bit加密(Microsoft Point-to-Point Encryption-微软点对点加密术)。在“/etc/ppp/pptpd-options”文件中,设置以下值即可:

refuse-pap
refuse-chap
refuse-mschap

require-mschap-v2
require-mppe-128

Windows客户端配置

以Windows自带的拨号网络配置为例。直接指定为“PPTP”的VPN类型,要求数据必须加密,同时协议部分只保留MS-CHAP v2即可。如下图所示。

Windows VPN拨号设置
Windows VPN 拨号设置

Linux客户端配置

与Windows客户端的配置基本一致,只是需要单独指示出MPPE-128bit加密方式,如下图所示。

Linux VPN 客户端配置
Linux VPN 客户端配置
设置SPF记录

设置SPF记录

最近发现的一个问题,如果邮件没有 SPF 记录,某些邮件服务器可能会过滤为垃圾邮件甚至直接拉入黑名单,比如 outlook 的服务器。相对而言,gmail 服务器要聪明很多,似乎在没有 SPF 记录的情况下,会反查MX记录及IP地址并进行匹配检验。

SPF的全称是:Sender Policy Framework, 由RFC7208文档定义详细规格。具体细节就不介绍了,基本意思就是让接收方的邮件服务器对发送者的域名和IP地址等进行检查。

在Linode的DNS管理中,仅仅添加MX记录是不够的,需要单独添加一条TXT记录,如图所示:

添加SPF的DNS记录
添加SPF的DNS记录

根据RFC7208的定义,可以进行很细致的控制。如果想省事,就如上图一样,设置一条”-all”的记录即可:

v=spf1 mx -all
Bootstrap 4!

Bootstrap 4!

最近真是好消息不断,经过多年的开发,bootstrap v4终于发布了,可喜可贺!

我们一直在关注这个版本,其中一些特性非常有吸引力,值得为此升级。我们的产品管理系统、网站等各方面都应用了bootstrap。悲剧性的事情是bootstrap当年推出v3后,过早地放弃了对v2的支持,同时变动实在太大,导致我们目前同时使用了v2和v3两个版本,一直困扰我们的维护工作。

而随着v4版本的推出,我们有机会统一内部的使用情况,将网站、软件产品管理系统的bootstrap都升级到v4的版本。当然,工作量估计非常巨大。

关于V4版本发布的细节,请参考以下文章:

http://blog.getbootstrap.com/2018/01/18/bootstrap-4/

DigitalOcean 免费升级

DigitalOcean 免费升级

早上开始工作时,收到了DO的邮件,非常惊喜。DO更新了各项套餐,增加了一些新套餐,也对老套餐进行了免费升级,真是良心企业。比如原有的“$10/mo”套餐,内存从1G升级到2G,存储从30G SSD升级为50G SSD。

不过默认情况下不会自动升级,需要手工对droplet进行resize。另外需要注意的是,可以只升级CPU和Memory,如果disk也同时升级到更高容量的话,则不支持降级回原有容量。

resize操作非常简单,请参考官方文档:

https://www.digitalocean.com/community/tutorials/how-to-resize-your-droplets-on-digitalocean

网站启用IPv6应注意的事项

网站启用IPv6应注意的事项

网站支持IPv6的步骤比较简单,基本上目前常用的软件,例如Apache、Postfix、dovecot等,都已经支持IPv4和IPv6双栈,只要服务商的设备提供IPv4和IPv6连接,这些软件本身无需为IPv6做特别配置。

需要注意的是服务商处的DNS配置。如果DNS配置不全面,某些服务器在鉴权时会拒绝接受来自IPv6地址的消息。例如gmail服务器在收到 email 消息时,会鉴定DNS和IPv6地址是否匹配,如果不匹配,则视为垃圾邮件直接拒绝,可以看到如下错误警示:

Our system has detected that this 550-5.7.1 message does not meet IPv6 sending guidelines regarding PTR records 550-5.7.1 and authentication.

下面以Linode中的配置做简单介绍(对DO而言也基本如此)。假设IPv4地址是“1.2.3.4”,IPv6地址是“1:2:3:4::5:6”,域名是“demo.com”。

Reverse DNS

Linode 为每个节点分配的DNS名默认是类似的成员名,例如“1234.members.linode.com”。在 Linux 系统 ping 域名”demo.com”时,首先显示的是”1234.members.linode.com”,然后才是跳转到”demo.com”。某些服务应用会认为是PTR错误。在linode中需要设置“ reverse DNS”记录,将节点的DNS名直接指定为“demo.com”。

具体措施请参考linode的在线文档

如果同时支持IPv4和IPv6,上述文档里指导的操作需要单独操作两次,分别指定IPv4地址和IPv6地址。

MX 记录

另外一个需要注意的是 MX 记录,即邮件服务器记录。如果我们将 MX 记录设置为“mail.demo.com”,那么在DNS的A和AAAA记录中,要分别对“mail.demo.com”设置IPv4和IPv6地址,例如以下DNS记录结果:

mail.demo.com. 300 IN AAAA 1:2:3:4::5:6
mail.demo.com. 300 IN A 1.2.3.4

仅仅指定一个地址,对端有可能以域名和地址不匹配为由拒绝消息请求。

TTL

Linode 默认的TTL是3600秒,建议修改为300秒。TTL 太长太短都不好,要根据自己的实际情况调整,以方便自己网络部署、同时又不增加太多网络负担为准则。

调整路由器的MTU

调整路由器的MTU

家里的无线路由器是Netgear,检查WAN设置中MTU默认为1496字节。这个数值是常见的无线网络MTU设置,但是实际应用中,发现其实还是能微调一下。

在CMD窗口使用以下命令测试网络MTU包:

ping -f -l 1460 myvoipapp.com

测试结果表明,实际负荷超过1460字节就会要求拆分数据包。加上28字节的包头,因此路由器中MTU应该设置为1488字节才是合理值。

Firefox中的proxy设置

Firefox中的proxy设置

最近重装了一台电脑,在Firefox中设置SocksV5代理上网(道理大家都懂的),发现还是无法上gmail, docs等科学网站。从log看,Firefox似乎一直在等待TLS握手。难道是某墙又升级了吗? 在另一台电脑上使用同样的ssl tunnel测试了一下,没问题,看来是Firefox自身出状况了。

重新检查Firefox中的配置,发现了以下一个小小的配置项:

Firefox的proxy配置项
Firefox的proxy配置项

好吧,看起来似乎理解了。如果不勾选这项,Firefox会用本地的DNS记录,导致无法访问科学网站(道理大家又懂了)。勾选之后,Firefox将通过proxy查询远端DNS记录,问题解决。

科学上网的感觉真好!从未有过的制度自信、文化自信、xx自信油然而生!

清空邮件箱

清空邮件箱

我们在VPS上搭建了一套Email系统,采用postfix+dovecot实现,同时在Gmail账户中设置了pop3代理来收取邮件(成功则删除服务器上的邮件)。这样做的好处是自己只要配置简单的Email系统,充分利用Gmail系统的垃圾邮件过滤、反钓鱼等诸多强大功能。整个系统工作得非常顺利,以至于几乎遗忘了Email系统的各项设置。

Gmail系统在收取邮件时,如果发现是垃圾邮件或者欺诈邮件,会将原邮件标记为“已读”并保留在pop3服务器中(也就是我们的Email系统),同时会给当前Gmail账号发送一封告警邮件。长此以往Email系统中已读邮件就越来越多,文件大小达数百MB甚至数十GB,极大浪费了宝贵的存储空间。

清理起来其实也非常容易,既然有用的邮件都已经收取到Gmail中了,直接清除掉本地所有邮件即可。比如清除用户“abc”的所有邮件:

sudo cat /dev/null > /var/mail/abc