ipatbles 是 Linux 下的网络防火墙规则管理/修改工具,通过控制 Linux 内核 netfilter 模块,来管理网络数据包的处理和转发。用来识别路由表中特定的流量然后执行设定的规则。只用于处理 IPv4 数据包;而对于 IPv6 数据包,则使用类似的 ip6tables 命令。

基本概念

netfilter 模型如下:
image.png

结构:

  • Tables 路由表:用来区分不同类型的数据包,如 filter,nat,mangle,每个表包含几个路由链
  • Chain 路由链:流量的类型,如 INPUT ,FORWARD ,OUTPUT ,每种类型流量可以设置不同规则
  • Rule 规则:用来匹配特定类型的流量,如匹配来自 192.168.1.230 的流量
  • Target 目标:用来处理匹配到的流量,如 ACCEPT, DROP, QUEUE.
  • Policy 策略:是默认的处理动作,用来处理没有匹配到的流量,如 ACCEPT or DROP.

iptables、ip6tables等都使用Xtables框架。存在“表(tables)”、“链(chain)”和“规则(rules)”三个层面。

每个“表”指的是不同类型的数据包处理流程,如filter表表示进行数据包过滤,而nat表针对连接进行地址转换操作。每个表中又可以存在多个“链”,系统按照预订的规则将数据包通过某个内建链,例如将从本机发出的数据通过OUTPUT链。在“链”中可以存在若干“规则”,这些规则会被逐一进行匹配,如果匹配,可以执行相应的动作,如修改数据包,或者跳转。跳转可以直接接受该数据包或拒绝该数据包,也可以跳转到其他链继续进行匹配,或者从当前链返回调用者链。当链中所有规则都执行完仍然没有跳转时,将根据该链的默认策略(“policy”)执行对应动作;如果也没有默认动作,则是返回调用者链。

阅读全文


openWrt 是专门为嵌入式设备设计的 Linux 系统,常用来作为软路由系统使用。LEDE 和 openWrt 已经合并到一起。

官网:https://openwrt.org/

最近研究软路由,所以先使用 VMware 虚拟机安装测试 openWrt,由于 VMware 只能识别 vmdk 格式的虚拟磁盘镜像,而官网下载的是 img 镜像,所以需要进行格式转换。

阅读全文



在升级到 wsl 2 后发现一些网络问题和之前的 wsl 不一样了,主要是 DNS 解析和 wsl 和 Windows 网络互访问题,这里介绍如何处理。

DNS 解析

wsl 2 使用的 DNS 解析服务器设置在文件:/etc/resolv.conf 内设置,这是一个 link 文件,真正的文件路径是:/run/resolvconf/resolv.conf,这个文件是每次 wsl 启动时自动生成的,内容如下:

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.24.144.1

阅读全文


今天将 Windows 10 升级到了 build 2004 版,顺便将 wsl 升级到了 wsl 2,升级教程参考:https://blog.niekun.net/archives/1785.html

运行 wsl 2 时,发现如下报错:

PS C:\Users\Marco Nie> wsl
The attempted operation is not supported for the type of object referenced.

无法正常使用 wsl,查询后得知是由于我正在使用的 proxifier 和 wsl 有了冲突,proxifier 是我一直使用的用来代理程序的应用。在 wsl 的 github 项目讨论中看到有人问了 proxifier 开发者,得到了解决方法,需要使用提供的程序来让 wsl 在运行时不要加载 LSP DLLs。

  • 下载 NoLsp.zip,解压得到 NoLsp.exe
  • 以管理员权限运行 terminal,执行 &"path\to\NoLsp.exe" "c:\windows\system32\wsl.exe"

看到终端显示 Succsess!,表示操作完成,然后 wsl 系统就可以正常打开使用同时不影响 proxifier。

参考链接:https://github.com/microsoft/WSL/issues/4177