分类 全部文章 下的文章

联想M920x与英特尔X710-DA4组建万兆迷你服务器

前段时间分享了联想thinkcentre M920x与Intel X710-T4组建万兆迷你服务器,用的网卡是4个万兆电口的X710-T4,由于最近打算更换核心交换机,换成mikrotik的全光口40gbps交换机CRS326-24S+2Q+RM,所以M920x更换了4光口的万兆网卡X710-DA4。
由于联想官方没有支持四光口的网卡自然也不会有对应的挡板,所以对原配的vga挡板做了魔改。

先上成品图,总体还是比较满意,切割挡板的适合稍微有点歪,但是不影响使用。
back
内部如图
inside
原挡板
original
魔改挡板
modified

已经测试一周,目前还是比较稳定,X710-DA4由于没有了phy芯片热量少了很多。

软件系统:
底层系统:esxi
软路由系统:routeros v7,v7系统现在还在beta阶段,详见RouterOS V7 测试(持续更新至正式版发布)
应用操作系统:ubuntu

网络拓扑图待更新

ps:联想tiny系列迷你主机各个型号对比
M720Q主板B360
M920Q主板Q370,单m.2 SSD,支持雷电扩展卡
M920X主板Q370,双m.2 SSD,支持雷电扩展卡,支持标准电压CPU(不带T的65w tdp),支持AMD RX560独立显卡
P330主板Q370,双m.2 SSD,支持雷电扩展卡,支持标准电压CPU(不带T的65w tdp,支持vPro CPU),支持NVIDIA P620/P1000独立显卡

netflix开通土耳其区或阿根廷区账号方法

20211019更新:可以使用vyprvpn切换到巴基斯坦区。

netflix由于土区,阿区的定价过于低廉,导致大量羊毛党注册账号,现在注册这两个区不仅要相应国家的ip还需要手机号验证,大大提高了注册门槛,以下方法可以避开手机号验证。由于是netflix的一个漏洞(或者有意为之?)此方法2020年2月16日测试有效。
首先注册一个美区或者港区的账号,免费一个月,然后付费一个月

在付费月取消订阅,在付费月结束后进行以下操作:

  • chrome 安装switchyomega插件,在这个免费代理网站挑选一个能用的代理,配置好switchyomega。
  • chrome清空netflix的cookies或者打开一个隐私页面(需要启用switchyomega的隐私页面权限)。
  • 登陆netflix,会弹出让你重新订阅。
  • 此时switchyomega选择配置好的土耳其代理,刷新页面,继续订阅,你会发现套餐金额已经变成了土耳其里拉价格了,继续完成订阅即可。

Google Cloud Platform(gcp)谷歌云安装Routeros

一般vps都可以通过dd来安装routeros软路由系统,可以参考青云主机安装routeros,附一键安装routeros脚本
gcp由于特殊的架构设计直接dd routeros的img文件不能正常启动
以下为通过gcp 的storage创建镜像方式安装routeros系统

1,macos系统安装必要工具

brew install wget
brew install truncate
brew install gnu-tar

2,下载routeros chr镜像Raw disk image

wget https://download.mikrotik.com/routeros/6.46.3/chr-6.46.3.img.zip

3,解压镜像文件

unzip chr-6.46.3.img.zip

4,按照gcp创建镜像规则制作镜像文件

4.1,扩展镜像空间,镜像占用大小需要是1G整倍数

truncate -s 1G chr-6.46.3.img

4.2,重命名镜像文件,镜像文件需要以disk.raw命名

mv chr-6.46.3.img disk.raw

4.3,打包镜像,打包文件名需要以.tar.gz结尾

gtar -Sczf chr-6.46.3.tar.gz disk.raw

我已经打包好的镜像,zip解压出gz包后再使用
5,上传到gcp到storage
6,在gcp到compute engine到映像下创建映像
来源选择Cloud Storage 文件中刚上传到chr-6.46.3.tar.gz文件
7,创建instance的时候使用自建映像或者已创建的instance删除原启动磁盘后新建以自建映像创建新磁盘

macos单独设置app的程序语言

个人习惯macos系统语言为英文,app在默认情况下跟随系统,不像ios可以单独设置。有些专业app上一些专有名词不熟悉还是需要查词典,比较影响效率,需要单独设置app语言。
首先查询app的包名

mdls -name kMDItemCFBundleIdentifier /Applications/Final\ Cut\ Pro.app

然后修改默认语言

修改为中文

defaults write com.apple.FinalCut AppleLanguages '("zh_CN")'

修改为英文

defaults write com.apple.FinalCut AppleLanguages '("en")'

实际写入的文件地址为

~/Library/Preferences/com.apple.FinalCut.plist

默认是没有这个属性的
修改后查询

defaults read com.apple.FinalCut AppleLanguages
(
    "zh_CN"
)

附语言代码
ar = Arabic
cs = Czech
da = Danish
de = German
el = Greek
en = English (US)
es = Spanish
fi = Finnish
fr = French
he = Hebrew
hu = Hungarian
id = Indonesian
it = Italian
ja = Japanese
ko = Korean
nl = Netherlands
no = Norwegian
pl = Polish
pt_PT = Portuguese
pt = Portuguese Brazil
ru = Russian
sk = Slovak
sv = Swedish
th = Thai
tr = Turkish
zh_CN = Chinese Simplified
zh_TW = Chinese Taiwan

ikev2自动更新let's encrypt证书

由于ikev2不能使用通配符证书,使用免费一年期证书存在一定风险(比如阿里云,通过证书可以找到跟域名关联的账号,进而实名查水表),所以推荐使用let's encrypt证书。但是let's encrypt证书有一个问题就是有效期只有三个月,所以写了个脚本自动更新证书。

以下以dns更新证书方式,域名dns服务商为cloudflare为例,服务器需要已经使用ikev2自动安装脚本安装ikev2(可以选择自签名证书),python包管理工具pip,

首先拿到cloudflare的Global API Key,目前certbot还不支持cloudflare的 zone api key

创建脚本使用的cloudflare的账号密码文件,记住路径填写到脚本的CLOUDFLARE_CREDENTIALS后

# Cloudflare API credentials used by Certbot
dns_cloudflare_email = cloudflare@example.com
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234567

并修改密码文件权限为400,防止certbot报错

chmod 0400 #文件路径

自动更新脚本,CERT_DOMAIN是ikev2证书的域名,CLOUDFLARE_CREDENTIALS是cloudflare账号密码文件路径,LE_EMAIL是let's encrypt证书联系邮箱(证书过期提醒)

脚本会检测是否安装certbot,域名证书是否第一次签发,证书是否需要更新,并将新证书复制到ipsec的证书目录

#! /bin/bash
CERT_DOMAIN=vpn.example.com
CLOUDFLARE_CREDENTIALS='/root/letsencrypt/cloudflarednsapi.conf'
LE_EMAIL='example@gmail.com'


function checkcertbot(){
if [ -z "`pip list certbot-dns-cloudflare |grep certbot-dns-cloudflare`" ];
then
pip install certbot-dns-cloudflare
fi
}

function checkcert(){
if [ ! -f "/etc/letsencrypt/live/${CERT_DOMAIN}/cert.pem" ];
then renewipseccert
else
CERT_EXPIRE=$(openssl x509 -checkend 1728000 -noout -in /etc/letsencrypt/live/$CERT_DOMAIN/cert.pem|grep not)
if [ -z "$CERT_EXPIRE" ];
then
renewipseccert
else
echo "The cert will not expire in 20 days,nothing to do."
fi
fi
}


function renewipseccert(){
/usr/local/bin/certbot  certonly -d ${CERT_DOMAIN} \
--agree-tos \
--non-interactive \
--email $LE_EMAIL  \
--dns-cloudflare \
--dns-cloudflare-credentials ${CLOUDFLARE_CREDENTIALS}
cp /etc/letsencrypt/live/$CERT_DOMAIN/chain.pem /usr/local/etc/ipsec.d/cacerts/ca.cert.pem
cp /etc/letsencrypt/live/$CERT_DOMAIN/cert.pem /usr/local/etc/ipsec.d/certs/server.cert.pem
cp /etc/letsencrypt/live/$CERT_DOMAIN/privkey.pem /usr/local/etc/ipsec.d/private/server.pem
/usr/sbin/service ipsec restart
}

checkcertbot
checkcert

在crontab里添加每5天执行一次即可

crontab -e
0 0 */5 * * #脚本路径