Recent Posts
-
July 23, 2020
Linux的conntrack Zone的
https://elixir.bootlin.com/linux/latest/source/include/net/netfilter/nf_conntrack_zones.hhttps://lwn.net/Articles/370152/https://specs.openstack.org/openstack/neutron-specs/specs/liberty/conntrack-zones.html才发现conntrack有一个zone的东西, 可以查看代码里面nf_ct_zo...
-
July 22, 2020
Linux内核的conntrack的连接跟踪表skb和nfct的查找和关联
static const struct nf_hook_ops ipv4_conntrack_ops[] = { { .hook = ipv4_conntrack_in, .pf = NFPROTO_IPV4, .hooknum = NF_INET_PRE_ROUTING, .priority = NF_IP_PRI_CONNTRACK, },ip_rcv 所有进入系统的包 NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING ipv4_c...
-
July 14, 2020
Netfilter的nf_drop返回特定的errno
/* Returns 1 if okfn() needs to be executed by the caller, * -EPERM for NF_DROP, 0 otherwise. Caller must hold rcu_read_lock. */int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state, const struct nf_hook_entries *e, unsigned int s){...
-
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会自动生成一个随机...