linode美国机房选择

Facility Hostname Test Download
US East(美国东部,纽瓦克) speedtest.newark.linode.com 100MB-newark.bin
US Southeast(美国东南,亚特兰大) speedtest.atlanta.linode.com 100MB-atlanta.bin
US Central(美国中部,达拉斯) speedtest.dallas.linode.com 100MB-dallas.bin
US West(美国西部,费利蒙) speedtest.fremont.linode.com 100MB-fremont.bin
EU Central(欧洲中部,法兰克福) speedtest.frankfurt.linode.com 100MB-frankfurt.bin
EU West(欧洲西部,伦敦) speedtest.london.linode.com 100MB-london.bin
AP South(亚太南部,新加坡) speedtest.singapore.linode.com 100MB-singapore.bin
AP Northeast(亚太东北,东京) speedtest.tokyo2.linode.com 100MB-tokyo2.bin

build FFmpeg in android

以下的内容其实也适用于在安卓下编译其他工具。

  1. ndk下载:https://developer.android.google.cn/ndk/downloads

  2. ffmpeg下载:https://github.com/FFFmpeg/FFFmpeg

  3. 编写配置脚本:

TOOLS_DIR=ndk路径/toolchains/llvm/prebuilt/linux-x86_64/bin
./configure --enable-shared \
--disable-static \
--disable-x86asm \
--enable-cross-compile \
--cc=$TOOLS_DIR/aarch64-linux-android30-clang \
--cxx=$TOOLS_DIR/aarch64-linux-android30-clang++ \
--strip=$TOOLS_DIR/llvm-strip \
--extra-cflags="-I$(pwd)/include" \
--extra-ldflags="-L$(pwd)/libs" \
--arch=arm64 \
--prefix=$(pwd)/install/aarch64 \
--target-os=android

请注意arch要更新成实际的:arch=arm64 or arch=arm

  1. 执行完以上脚本后,开始编译 :make -j16

如果想让程序在当前目录寻找依赖的.so文件(LDFLAGS = -Wl,--hash-style=sysv,-Bsymbolic,-rpath=./):

make -j16 -Wl,--hash-style=sysv,-Bsymbolic,-rpath=./

c99较c89的主要新增特性

  • // 注释

  • func预定义标识符

  • 中使用布尔类型

  • 指定的结构体初始值设定项
    -空的宏参数

  • 中使用扩展的整数类型

  • 灵活的数组成员 (zero size arrays)

  • 内联函数

  • 整数常量类型规则

  • 将声明和代码混合

  • long long 类型和库函数

  • snprintf() 函数家族

  • 枚举声明中支持尾随逗号

  • 可变参数宏

  • 长度可变的数组

docker支持IPV6

这两天因为某个需求,一直在研究这个问题。

网上都看了,什么ipv6 subnet daemon.json 之类的,都是一通抄,还是没有能说明白关键联系的,很多都是抄的碎片化信息。

因为说不清楚关联,所以就没法在实际环境中结合实际灵活解决问题。

docker的版本

docker的版本问题。初步结论是:docker engine 的版本大于等于20.10.2 。参见:https://zhuanlan.zhihu.com/p/342633966

经过验证,如果版本不对,在配置daemon.json时,就会报错,令人莫名, 实际是版本的ipv6支持问题,不支持新字段。

注意:系统默认的docker版本是跟这个系统的代码版本库走的,所以想要最新的docker版本,首先要确认自己的系统,否则要手动安装。

daemon.json

这个也是网上看到最多的:

{
  "ipv6": true,
  "fixed-cidr-v6": "fd00::/80",
  "experimental": true,
  "ip6tables": true
}

在跳过了docker版本的坑,这里就可以配置了。这里核心的是那个fixed-cidr-v6, 很多人看不懂这个,不知道这个要怎么改,这个就要自己实际弄懂ipv6的子网了,要根据自己的外网IPV6地址,配置实际的子网段。请google搜索 "ipv6 subnet"。

测试docker获取ipv6能力

docker run --rm -it busybox ping -6 -c4 ipv6-test.com
docker run --rm -it busybox ifconfig

正常返回,就说明系统的docker ipv6能力正常

frq实现私密访问

目标:通过密码从国内代理流量到国外(ssh)

frp server

略,通用配置

目标服务器(海外)sshd server

frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh]
type = stcp
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22

国内服务器

frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh_visitor]
type = stcp
role = visitor
server_name = secret_ssh
sk = abcdefg
bind_addr = 127.0.0.1
bind_port = 6000

server_name sk 可以简单理解成frpc远端的账号密码。

从国内访问海外ssh

ssh -oPort=6000 x.x.x.x(国内的ip)

ssh秘钥登陆,禁用密码

为了防止网络嗅探,一般拿到vps第一个就是关密码,开秘钥登陆

编辑 /etc/ssh/sshd_config 文件,注意是sshd_config,不要眼花看成成ssh_config

#开秘钥:
RSAAuthentication yes
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes +ssh-rsa

#关密码:
PasswordAuthentication no

篇日志完后记得重启
systemctl restart ssh