Recent Posts
-
July 14, 2020
Linux设置syscall的bpf过滤函数seccomp实现sandbox
cloudflare的blog这篇Sandboxing in Linux with zero lines of codehttps://blog.cloudflare.com/sandboxing-in-linux-with-zero-lines-of-code/提到linux 一个很有意思的syscall, 可以用来设置进程 syscall的白名单列表。就是可以设置一个BPF来显示各种syscall调用吧。 现在好像到处是BPF的身影。这个调用还是很有意思的,systemd好像也支持 配...
-
July 07, 2020
Perl的flock文件锁单实例运行
bash有个flock的命令,perl里面好像也有一个 flock函数,就对应c语言的flock函数的吧。https://perldoc.perl.org/functions/flock.html官方的例子要把这行改为这样,或者像下面那样直接给出 use Fcntl qw(:flock SEEK_END LOCK_EX LOCK_UN);sub lock { my ($fh) = @_; my $LOCK_EX = 2; flock($fh, $LOCK_EX) or die "Ca...
-
July 07, 2020
Golang里面模板templete调用函数
这篇文字的例子很好https://www.calhoun.io/intro-to-templates-p3-functions/完整的文档在这里,不过不是那么直观https://docs.studygolang.com/pkg/text/template/
-
July 04, 2020
Linux环境遇到的c++位运算的一个bug
昨天发现一个程序的bugunsigned long mask = 1 << 1;for (unsigned long i = 0; i < 64; i++) { if (mask & (1 << i)) { printf("%lu", i); }}我写这段代码的时候,觉得应该只会输出1,但centos8 + gcc 输出是 1 和 33,一下颠覆了我的认知。这里的原因就是1这个常量整数时32位的int,然后左移了33位之后就溢出了再次从头开始...
-
July 03, 2020
Linux的rtnelink编程修改和获取系统路由表
rtnetlinkhttps://www.man7.org/linux/man-pages/man7/rtnetlink.7.html直接使用netlink应该比较难用libnetlinkhttps://www.man7.org/linux/man-pages/man3/libnetlink.3.html ip route get命令使用应该是libnetlink接口,不过centos-8好像没找到libnetlink.so 和libnetlink-devel包需要直接ipro...
-
June 30, 2020
查看linux的page cache文件系统缓存里面是那些文件占用的vmtouch命令
top或者free命令发现linux的page cache文件缓存占用的内存特别多,但这些命令没法都看到是那些文件被缓存的,在进程的内存信息里面也没看的出来。在网上找了一下,提到几个命令吧fincore# rpm -qf /usr/bin/fincoreutil-linux-2.32.1-22.el8.x86_64centos 8 自带的一个命令,但好像不太好用# fincore 1.txt RES PAGES SIZE FILE21.7M 5555 21.7M 1.txt需要你指...
-
June 30, 2020
Openssl和aes的key和iv安全性问题
AES算法和模式的选择openssl enc -ciphers 不能用ecb模式,ecb是不安全的。 如果没有特殊要求, -aes-256-cbc aes-256-cfb 和-chacha20 都可以吧AES加密算法的CBC模式等要求IV要足够是随机的不可预测的,每次加密都不要用一样的IV, 这样才是安全的openssl 不要使用-K 和-iv 使用固定IV, 这样IV就没有随机性不安全了openssl 的key和IV的生成如果不是用-K和-iv指定的话,openssl会自动生成一个随机...
-
June 29, 2020
Linux查看丢包原因之dropwatch
dropwatchyum install dropwatchdropwatch -l kasdropwatch> startstap --poison-cache -vvv -L 'kernel.trace("*")'stap /usr/share/systemtap/examples/network/dropwatch.stp -c "sleep 100"perf top -e skb:kfree_skb
-
June 29, 2020
Centos 8多网卡时非主网卡路由不通的reverse path filtering(rp_filter)问题
CentOS的虚拟机设置使用了多个网卡,发现只有一个网卡的外部网络通讯是正常的用ping命令测试排查,结合tcpdump抓包排查,发现网络包是可以出去,icmp reply也回到本机了但被本机丢掉了,用dropwatch命令可以但在本机的ip_rcv_finish函数里面被丢包了ping 163.com -I enp0s3ping 163.com -I enp0s8检查路由没有问题, 发现只有 metric值最小的网卡通讯是可以正常的# ip routedefault via 172.31...
-
June 12, 2020
Golang的http反向代理
https比http的特殊,用的connect tunnel的技术。设置dns服务器地址的只有在linux下面才会用golang 的resolver才会有效果,windows下面不使用这个设置。package mainimport ( "context" "flag" "io" "log" "net" "net/http" "net/http/httputil" "strings" "time")var verbose boolvar dnsServer stringvar localIp...