Linuxes

记windows通过linux共享上网

背景 女友家用笔记本的无线网卡突然罢工了,尝试有线还是能用的。但是网线连接到路由器不够长。我本人台式机装的是archlinux,一块有线网卡,一块USB无线网卡,平时使用USB无线网卡上网。两电脑距离较近,使用网线完全合适,于是想到能不能让windows通过linux上网。作为一个爱折腾的码农,关键时候怎能不好好表现一下,说干就干。 环境 windows7笔记本一台,双网卡, 一块有线网卡(没用),一块无线网卡(已坏) archlinux台式机一台,双网卡,一块有线网卡(没用),一块USB无线网卡(正常上网) 普通网线(双绞线)一根 目的:通过网线连接两块有线网卡,使windows通过linux上网 配置步骤 用网线连接两块有线网卡 开启ip转发sysctl net.ipv4.ip_forward=1 开启nat伪装iptables -t nat -A POSTROUTING -j MASQUERADE 配置linux有线网卡静态IP: 192.168.1.2/24 配置windows有线网卡静态IP: 192.168.1.3,MASK: 255.255.255.0, GATEWAY: 192.168.1.2 配置windows的DNS为linux机器上的DNS或者google公共DNS: 8.8.8.8 观察网络 在linux上观察windows ping百度的网络数据,其中192.168.0.114是linux上USB无线网卡的IP地址: [root@arch ~]# tcpdump -i any -nn icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes 23:00:03.298518 IP 192.168.1.3 > 115.

常用调试工具

linux下常用调试工具 fuser fuser使用文件或者套节字来识别进程 示例 fuser <filename> 常用选项 -n # 指定namespace(file, tcp, udp) -m # 指定挂载点 lsof lsof(list open files)列出当前系统打开文件 示例 lsof lsof -p 1234 常用选项 -p <pid> # 指定特定进程 -c <cmd> # 指定命令 -n # 不解析主机名 -P # 不解析端口号 gstack gstack打印的堆栈信息 示例 gstack <pid> strace strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 示例 strace cat /dev/null strace -p 1234 常用选项 -p <pid> # 指定特定进程 -o <filename> # 输出到文件 -f # 踪子进程 -ff # 跟-o连用,每个进程输出到各自文件 tcpdump tcpdump抓包