# Default Below
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

# Allow Flow Transfer of the Client Via Router Device
iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
iptables -I FORWARD -i vpns+ -s 192.168.100.0/24 -j ACCEPT
iptables -I INPUT -i vpns+ -s 192.168.100.0/24 -j ACCEPT
# For Bypass Router
iptables -t nat -I POSTROUTING -o br-lan -j MASQUERADE
# OR
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

延伸阅读:

一、iptables具有Filter, NAT, Mangle, Raw四种内建表:

1、Filter是iptables的默认表,因此如果没有自定义,默认使用filter表,具有以下三种内建链:
INPUT链 – 处理来自外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。

2、NAT表有三种内建链:
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
OUTPUT链 – 处理本机产生的数据包。

3、Mangle表用于指定如何处理数据包,能改变TCP头中的QoS位,具有5个内建链:
PREROUTING
OUTPUT
FORWARD
INPUT
POSTROUTING

4、Raw表用于处理异常,具有2个内建链:
PREROUTING chain
OUTPUT chain

二、描述规则的基本参数

1、-p 协议(protocol),用于指定规则的协议,如TCP、UDP、ICMP等,可以使用all来指定所有协议:
如果不指定-p参数,则默认是all值,单并不推荐,因此请明确指定协议名称;
另外可以使用协议名(如TCP),或者是协议值(比如6代表TCP)来指定协议,映射关系可查看/etc/protocols;
还可以使用–protocol参数来代替-p参数。

2、-s 源地址(source),用于指定数据包的源地址,其参数可以使IP地址、网络地址、主机名:
例如:-s 192.168.1.101指定IP地址:
例如:-s 192.168.1.10/24指定网络地址:
如果不指定-s参数,就代表所有地址:
还可以使用–src或者–source。

3、-d 目的地址(destination),用于指定目的地址,参数和-s相同:
还可以使用–dst或者–destination。

4、-j 执行目标(jump to target),指定了当与规则(Rule)匹配时如何处理数据包,可能的值是ACCEPT、DROP、QUEUE、RETURN、MASQUERADE,还可以指定其他链(Chain)作为目标:
注:MASQUERADE,地址伪装,算是SNAT中的一种特例,可以实现自动化的SNAT。

5、-i 输入接口(input interface),指定了要处理来自哪个接口的数据包,这些数据包即将进入INPUT、FORWARD、PREROUTE链:
例如:-i eth0指定了要处理经由eth0进入的数据包;
如果不指定-i参数,那么将处理进入所有接口的数据包;
如果出现! -i eth0,那么将处理所有经由eth0以外的接口进入的数据包;
如果出现-i eth+,那么将处理所有经由eth开头的接口进入的数据包;
还可以使用–in-interface参数。

6、-o 输出(out interface),指定了数据包由哪个接口输出,这些数据包即将进入FORWARD、OUTPUT、POSTROUTING链
如果不指定-o选项,那么系统上的所有接口都可以作为输出接口:
如果出现! -o eth0,那么将从eth0以外的接口输出;
如果出现-i eth+,那么将仅从eth开头的接口输出;
还可以使用–out-interface参数。

最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,欢迎赞赏。