Recent Posts
-
April 11, 2023
Golang编程tcp连接绑定指定网络出口bindtodevice
像ping -I 命令一样指定 ip 或者网卡名字,golang里面指定源ip是比较方便的,但指定源接口作为出口就不太方便了。需要 为Dialer的Control里面对原始fd进行原始的syscall系统调用。看了源码研究了好一会才好到换个方法 s.tcpDialer = &net.Dialer{ LocalAddr: tcpSource, Timeout: 30 * time.Second, ...
-
March 21, 2023
Golang的简单webdav服务器
windows 默认好不支持 http basicauth,只支持https,好像需要改一下注册表才行。但如果不用密码的话,直接“映射网络驱动器”是可以的。package mainimport ( "flag" "net/http" "golang.org/x/net/webdav")func main() { flagRootDir := flag.String("dir", "/", "webdav root dir") flagHttpAddr := flag.String("add...
-
March 01, 2023
Linux编程监控网卡网线的拔插和系统路由条目的变化
ip命令有一个 “ ip monitor link” 就是想要的功能吧,这个接口是内核的netlink 通知来实现的https://www.man7.org/linux/man-pages/man7/netlink.7.html 更具体来说是rtnetlink,可以监控路由和链路的通知机制, https://www.man7.org/linux/man-pages/man7/rtnetlink.7.html 哟一个libnetlink的封装,但感觉不是很好用 https://ww...
-
December 20, 2022
Nginx源码阅读server和location的匹配
ngx_http_parse_request_line解析记录hostrequest->host_startrequest->host_endngx_http_process_request_line阿里的connect代理 if (r->connect_host_start && r->connect_host_end) { r->connect_host 记录解析出来的coonect方法的host r->connect_po...
-
December 15, 2022
Nginx代码阅读http处理流程
配置文件command的处理函数ngx_http_core_server // server命令ngx_http_core_location // locaotion命令加载配置ngx_http_block ngx_http_init_phases module->postconfiguration ngx_http_variables_init_vars ngx_http_init_phase_handlersngx_http_subrequest ngx_htt...
-
October 25, 2022
制作grub启动光盘iso文件安装linux安装u盘
grub2需要额外安装的包dnf provides /usr/lib/grub/x86_64-efidnf install grub2-pc grub2-efi-x64 grub2-efi-x64-modules xorrisomkdir iso常规的MBR磁盘分区,要预留2MB空间给grub吧,比如# parted -a optimal -s /dev/sdc -- mklabel msdos \ mkpart primary ext4 4096s 400MB \ mkpar...
-
October 24, 2022
基于isolinux制作linux的iso启动光盘
参考 https://wiki.syslinux.org/wiki/index.php?title=ISOLINUXdnf install syslinux syslinux-nonlinuxdns install xorrisocp /boot/vmlinuz-4.18.0-372.26.1.el8_6.x86_64 CD_root/isolinux/vmlinuzcp initramfs.img CD_root/isolinux/initramfs.imgcp /usr/share...
-
September 29, 2022
Iptables匹配udp包的长度和payload里面的内容
iptables -t raw -I PREROUTING 1 -p udp -m length --length 52 -m u32 --u32 "32 & 0xFFFFFFFF = 0x584D5359 && 44 & 0xFFFFFFFF= 0x464c5559" -j DROP length这个target可以匹配包长度, --length 为wireshark看到ip头的total length的数值 u32 匹配udp包的内容, “偏移地址16”...
-
August 29, 2022
Golang设置windows注册表和系统网络代理
官方有一个修改注册表的库。 https://pkg.go.dev/golang.org/x/sys/windows/registry修改windows系统代理,要修改注册表的这两个键HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable 整型类型HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\...
-
August 18, 2022
Tcp的close_wait 状态
发现http服务器有一个bug,有一个CLOSE_WAIT状态的socket导致 反复的读取死循环100%,只有重启进程才能修复。网上找的 https://stackoverflow.com/questions/15912370/how-do-i-remove-a-close-wait-socket-connectionCLOSE_WAIT means that the local end of the connection has received a FIN from the othe...