了解 iptables 命令以限制出站连接带宽
Understanding iptables commands to limit outbound connection bandwidth
我在比特币源代码树中找到了以下代码片段,它被定义为 bash 脚本的一部分,用于控制端口 8333 上的出站连接。有人可以向我解释这些命令的确切工作方式。
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET} -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET} -j MARK --set-mark 0x2
源文件:https://github.com/bitcoin/bitcoin/blob/ad57b310bac44a7e470cf66276421f2bbc61b1f0/contrib/qos/tc.sh
我们来分解一下。
-t mangle
: table 正在更改
-A OUTPUT
:将此规则附加到 OUTPUT 链
-p tcp
: 协议是 tcp
-m tcp
: 加载 TCP 模块(这通过 -p 自动发生,所以这是多余的)
--(d|s)port 8333
: 目标|源端口是 8333 ! -d ${LOCALNET}: 目的地不在本地网络中
-j MARK
:跳转到 MARK table(--set-mark 需要)
--set-mark 0x2
: 在数据包上设置标记,由其他东西处理
这里的高级目标是在数据包上设置 0x2 标记。从GitHub的评论来看,那个标记是用来限制数据包的。
我在比特币源代码树中找到了以下代码片段,它被定义为 bash 脚本的一部分,用于控制端口 8333 上的出站连接。有人可以向我解释这些命令的确切工作方式。
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET} -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET} -j MARK --set-mark 0x2
源文件:https://github.com/bitcoin/bitcoin/blob/ad57b310bac44a7e470cf66276421f2bbc61b1f0/contrib/qos/tc.sh
我们来分解一下。
-t mangle
: table 正在更改-A OUTPUT
:将此规则附加到 OUTPUT 链-p tcp
: 协议是 tcp-m tcp
: 加载 TCP 模块(这通过 -p 自动发生,所以这是多余的)--(d|s)port 8333
: 目标|源端口是 8333 ! -d ${LOCALNET}: 目的地不在本地网络中-j MARK
:跳转到 MARK table(--set-mark 需要)--set-mark 0x2
: 在数据包上设置标记,由其他东西处理
这里的高级目标是在数据包上设置 0x2 标记。从GitHub的评论来看,那个标记是用来限制数据包的。