Below you will find pages that utilize the taxonomy term “Iptables”
October 30, 2022
Linux下两种 DNAT 用法的差异
"\u003cp\u003e前段时间使用 \u003ccode\u003eiptables\u003c/code\u003e 的 \u003ccode\u003eDNAT\u003c/code\u003e 实现一个业务需求的时候,遇到了一些问题这里将其整个过程记录下来。\u003c/p\u003e\n\u003ch2 id=\"需求\"\u003e需求\u003c/h2\u003e\n\u003cp\u003e这里假设开发机地址为 \u003ccode\u003e192.168.3.80\u003c/code\u003e,要实现的需求是当用户在开发机访问一个IP地址 \u003ccode\u003e192.168.3.196\u003c/code\u003e时,将请求转发到另一台机器 \u003ccode\u003e192.168.3.58\u003c/code\u003e,很明显直接使用 \u003ccode\u003eDNAT\u003c/code\u003e 来实现即可。\u003c/p\u003e\n\u003ch2 id=\"问题现象\"\u003e问题现象\u003c/h2\u003e\n\u003cp\u003eiptables 命令如下\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003esudo iptables -t nat -F\nsudo iptables -t nat -A PREROUTING -d 192.168.3.196 -p tcp --dport 8080 -j DNAT --to-destination 192.168.3.58:8080\nsudo iptables -t nat -A POSTROUTING -d 192.168.3.58 -p tcp --dport 8080 -j SNAT --to-source 192.168.3.196:8080\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这时在开发机器访问\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecurl http://192.168.3.196:8080\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e发现提示错误\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecurl: (7) Failed …\u003c/code\u003e\u003c/pre\u003e"
July 20, 2022
Linux中调试 iptables
"\u003cp\u003e环境:\u003c/p\u003e\n\u003cp\u003e客户端(windows) 192.168.6.21\u003c/p\u003e\n\u003cp\u003e服务器(Ubuntu): 192.168.6.23\u003c/p\u003e\n\u003ch1 id=\"开启iptables调试内核模块\"\u003e开启iptables调试内核模块\u003c/h1\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e $ modprobe nf_log_ipv4\n $ sysctl net.netfilter.nf_log.2\n net.netfilter.nf_log.2 = nf_log_ipv4\n\u003c/code\u003e\u003c/pre\u003e\u003ch1 id=\"添加iptables规则\"\u003e添加iptables规则\u003c/h1\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e $ iptables -t raw -A PREROUTING -p icmp -j TRACE\n $ iptables -t raw -A OUTPUT -p icmp -j TRACE\n\u003c/code\u003e\u003c/pre\u003e\u003ch1 id=\"测试规则\"\u003e测试规则\u003c/h1\u003e\n\u003cp\u003e客户端执行 ping 命令,\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e $ ping 192.168.6.23 -n 1\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这里使用 -n 参数指定发送的包数量为1,方便我们分析日志\u003c/p\u003e\n\u003cp\u003e此时在服务器上执行查看日志命令, 日志文件为:\u003ccode\u003e/var/log/syslog\u003c/code\u003e 或者 \u003ccode\u003e/var/log/kern.log\u003c/code\u003e 或者 \u003ccode\u003e/var/log/messages\u003c/code\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ tail -f /var/log/syslog\n Jul 20 11:28:40 ubuntu kernel: [ …\u003c/code\u003e\u003c/pre\u003e"
November 23, 2021
理解 firewalld/ufw 与iptables、netfilter 的关系
"\u003cp\u003eiptables 作为 Linux/Unix 下一款优秀的防火墙软件,在安全方面发挥着极其重要的作用,作为系统管理员来讲一点也不陌生。不过对于一些新手来说,复杂性是一个门槛,Linux厂商为了解决这个问题,于是推出了新的管理工具,如 Centos 下的 Firewalld 和 Ubuntu 下的ufw, 他们对新手十分友好,只需要几个很简单的命令即可实现想要的功能,再不也必为记不住iptables中的四表五键而烦恼了。\n那么,是不是有了 firewalld 和 ufw就不需要iptables了呢?并不是的。\u003c/p\u003e\n\u003cp\u003e首先我们要清楚firewalld、ufw 与iptables的关系,可以理解为两者只是对iptables其进行了一层封装,它们在用户交互方面做了非常多的改进,使其对用户更加友好,不需要再记住原来那么多命令了。\u003c/p\u003e\n\u003cp\u003e而目前对于一些系统管理员来讲,大概率还是会直接使用 iptables,主要原因是灵活性,当然也有一定的历史原因。对比前面两个管理工具,他们也存在一定的问题,如只能对单条规则进行管理,详细参考相关文档。\u003c/p\u003e\n\u003cp\u003e另外对于 firewalld 还有图形界面。 …\u003c/p\u003e"
February 1, 2013
iptables规则的查看、添加、删除和修改[教程]
"\u003cp\u003e在 Linux 中 iptables 实际上只是一个操作 Linux 内核 Netfilter 子系统的“界面”。顾名思义,Netfilter 子系统的作用,就是 Linux 内核里挡在“网卡”和“用户态进程”之间的一道“防火墙”。 也就是说 \u003ccode\u003eiptables\u003c/code\u003e 工作在用户态,它和我们平时开发的应用程序完全一样的,只是它的作用是用来操作 \u003ccode\u003eNetFilter\u003c/code\u003e 的一个工具。而 \u003ccode\u003eNetFilter\u003c/code\u003e 工作在内核态,它们的关系,可以用如下的示意图来表示:\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2022/06/4a540c412455b4213552bbb531c535ad.webp\" alt=\"\"\u003e图来自极客时间\u003c/p\u003e\n\u003cp\u003e在 iptables 中存在四表五链的概念。\u003c/p\u003e\n\u003cp\u003e表分别为 \u003ccode\u003efilter\u003c/code\u003e、\u003ccode\u003enat\u003c/code\u003e、\u003ccode\u003eraw\u003c/code\u003e、\u003ccode\u003emangle\u003c/code\u003e ,当数据包抵达防火墙时,将依次应用 raw、mangle、nat、和 filter 表中对应链内的规则,其中表的应用顺序为:raw -\u0026gt; mangle -\u0026gt; nat -\u0026gt; filter,而表中链的规则自上向下依次执行,执行中有可能跳转到其它链中继续执行。 \u003cimg src=\"https://blogstatic.haohtml.com/uploads/2021/10/d2b5ca33bd970f64a6301fa75ae2eb22.png\" alt=\"\"\u003eiptables Processing Flowchart\u003c/p\u003e\n\u003cp\u003e如果按七层网络协议的话,则 ipables 中的数据流向为\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2021/10/d4305170eed2b86a240d044f337dd95c.png\" alt=\"\"\u003e(来自Netfilter 官方的原理 …\u003c/p\u003e"
July 25, 2011
iptables 开放80端口
"\u003cp\u003eiptables -F //清空规则\u003c/p\u003e\n\u003cp\u003eiptables -A INPUT -p tcp –dport 22 -j ACCEPT /*允许包从22端口进入*/\niptables -A OUTPUT -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT /*允许从22端口进入的包返回*/\niptables -A OUTPUT -p udp –dport 53 -j ACCEPT\niptables -A INPUT -p udp –sport 53 -j ACCEPT\niptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT /*允许本机访问本机*/\niptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT\niptables -A INPUT -p tcp -s 0/0 –dport 80 -j ACCEPT /*允许所有IP访问80端口*/\niptables -A OUTPUT -p tcp –sport 80 -m state …\u003c/p\u003e"
October 19, 2010
iptables命令
"\u003cp\u003e详细教程参考: \u003ca href=\"https://blog.haohtml.com/archives/13649\"\u003ehttps://blog.haohtml.com/archives/13649\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e语法\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eiptables [-t 要操作的表]\u003c/p\u003e\n\u003cp\u003e\u0026lt;操作命令\u0026gt;\u003c/p\u003e\n\u003cp\u003e[要操作的链]\u003c/p\u003e\n\u003cp\u003e[规则号码]\u003c/p\u003e\n\u003cp\u003e[匹配条件]\u003c/p\u003e\n\u003cp\u003e[-j 匹配到以后的动作]\u003c/p\u003e\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e操作命令(-A、-I、-D、-R、-P、-F)\u003c/p\u003e\n\u003cp\u003e查看命令(-[vnx]L)\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e如以下命令,其中-t filter为可选项,一般情况下省略不写:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eiptables\u003c/strong\u003e-t filter-AINPUT-j DROP\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eiptables命令参数\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e-A 添加规则到规则链表 iptables -A INPUT\u003c/p\u003e\n\u003cp\u003e-D 从规则链表中删除规则,可是完整规则,也可以是规则编号\u003c/p\u003e\n\u003cp\u003e-R 取代现行规则,不改变在链中的顺序如:iptables -R INPUT 1 -s 193.168.0.1 -j DROP\u003c/p\u003e\n\u003cp\u003e-I 插入一条规则 如:iptables -I INPUT 1 –dport 80 -j DROP\u003c/p\u003e\n\u003cp\u003e-L 列出某规则链中所有规则\u003c/p\u003e\n\u003cp\u003e-F 删除某规则链中所有规则\u003c/p\u003e\n\u003cp\u003e-Z 将封包计数器清零\u003c/p\u003e\n\u003cp\u003e-N 定义新的规则链\u003c/p\u003e\n\u003cp\u003e-X 删除某个规则链\u003c/p\u003e\n\u003cp\u003e-P 定义过滤政策\u003c/p\u003e\n\u003cp\u003e-E 修改自定义规则链名 …\u003c/p\u003e"
October 19, 2010
LINUX下iptables的命令应用
"\u003cp\u003e手册:\u003c/p\u003e\n\u003cp\u003eiptables命令\n\u003cstrong\u003e维护规则表的命令:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e(-N)创建一个新规则表\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e(-X)删除一个空规则表\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e(-P)改变内建规则表的默认策略\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e(-L)列出规则表中的规则\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e(-F)清空规则表中的规则\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e(-Z)将规则表计数器清零\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003e管理规则表中的规则:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e(-A)添加新规则到规则表\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e(-I)插入新规则到规则表的某个位置\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e(-R)替换规则表中的规则\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e(-D)删除规则表中的某条规则\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e在调试iptables规则时,你也许需要反复修改你的脚本来实现某些特定的功能,这时建议在你的脚本里添加这样几行,以防止重复设置规则:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e# 清除所有规则\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eiptables -F -t filter\u003c/p\u003e\n\u003cp\u003eiptables -X -t filter\u003c/p\u003e\n\u003cp\u003eiptables -Z -t filter\u003c/p\u003e\n\u003cp\u003eiptables -F -t nat\u003c/p\u003e\n\u003cp\u003eiptables -X -t nat\u003c/p\u003e\n\u003cp\u003eiptables -Z -t nat\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e# 设置内建规则表的默认策略\u003c/strong\u003e\niptables -P INPUT ACCEPT\u003c/p\u003e\n\u003cp\u003eiptables -P OUTPUT ACCEPT\u003c/p\u003e\n\u003cp\u003eiptables -P FORWARD ACCEPT …\u003c/p\u003e"
August 22, 2010
Linux中Iptables命令详解
"\u003cp\u003e手册:\u003c/p\u003e\n\u003cp\u003e用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改\u003c/p\u003e\n\u003cp\u003eiptables – [RI] chain rule num rule-specification[option]\n用iptables – RI 通过规则的顺序指定\u003c/p\u003e\n\u003cp\u003eiptables -D chain rule num[option]\n删除指定规则\u003c/p\u003e\n\u003cp\u003eiptables -[LFZ] [chain][option]\n用iptables -LFZ 链名 [选项]\u003c/p\u003e\n\u003cp\u003eiptables -[NX] chain\n用 -NX 指定链\u003c/p\u003e\n\u003cp\u003eiptables -P chain target[options]\n指定链的默认目标\u003c/p\u003e\n\u003cp\u003eiptables -E old-chain-name new-chain-name\n-E 旧的链名 新的链名\u003c/p\u003e\n\u003cp\u003e用新的链名取代旧的链名\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e说明\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。\u003c/p\u003e\n\u003cp\u003e可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作’target’(目标),也可以 …\u003c/p\u003e"