小编Mul*_*lot的帖子

HTB 的最小速率和默认类别问题

我对我正在使用的 HTB 结构有一些疑问。

我的目标是限制本地网络中用户的下载和上传速度。网络的每个用户都有一个个人域列表,其中包含他不能超过的域的上下速度。

这意味着用户 1 可以在 slashdot.org 上的访问权限限制为 8KB 下载和 3KB 上传,用户 2 可以在 slashdot.org 上访问限制为 4KB 和 1KB。

现在我设置了一个很好的 iptables/tc 对,但规模很小,同时使用 2 或 3 个虚拟主机(不幸的是,我无法执行实际大小测试)。

这是我当前的结构(我只会显示 LAN 出口的结构,用于上传的结构只是该结构的“副本”)

连接在接口上的 HTB qdisc(句柄 2:),默认流量类是类 FFFF。

根类 2:1 直接位于 HTB qdisc 下,具有速率和上限下行链路容量。

默认类 2:FFFF 作为 2:1 的子级,速率为 1kbsp,下行容量为 ceil。

然后,当某个域的用户有新的限制时,动态添加其他类,添加新的 tc 类来控制来自其域的下载速度。

现在,这就是我所做的:

新建一个具有唯一id的tc类(取自数据库,不是这里的重点),作为父类2:1,速率值为1bps,ceil值设置为限制下载速度。

下面是 tc 命令:

-------------- BEGIN SCRIPT --------------
DOWNLINK=800

## Setting up the static tc qdisc and class

$tc qdisc add dev $LAN_IFACE root handle 2: htb default …
Run Code Online (Sandbox Code Playgroud)

linux iptables traffic-shaping htb

29
推荐指数
1
解决办法
2355
查看次数

使用带有 NAT 的 iptables 标记数据包

我必须为路由器编写 bash 脚本来控制给定域名上给定用户的带宽限制。

为此,我使用 iptables 来标记从受限域传入到专用网络中的用户 IP 地址的数据包。对于每一对 user_ip/domain_ip,我都有一个可以标记数据包的密钥。

我在 mangle 表中添加这些规则,如下所示:

$iptables -t mangle -A PREROUTING -p tcp -d $userIp -s $restrictedDom -j MARK --set-mark $id 
$iptables -t mangle -A PREROUTING -p tcp -d $userIp -s $restrictedDom -j RETURN
Run Code Online (Sandbox Code Playgroud)

我在 nat 表中的 NAT 设置(eth0 是我的互联网接口,我使用 tap0 作为 LAN 接口)是

$iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

我的 LAN 用户的数据包应该与 mangle 表中的规则匹配,但没有被捕获。

示例:(PREROUTING CHAIN 中的 table mangle)这例如用于为 LAN 网络中的用户 192.168.0.2 标记来自 slashdot.org 的数据包。

Chain PREROUTING (policy ACCEPT 14858 …
Run Code Online (Sandbox Code Playgroud)

linux nat routing iptables qos

4
推荐指数
1
解决办法
5130
查看次数

如何避免 DNS 欺骗进行 DNS 查找

我正在尝试找到一种方法来获取域名的真实 IP 地址。我正在使用iptablestc对路由器进行流量整形。然后我需要设置iptables规则来标记来自某些域的数据包,使用它们的 ip 地址。

我第一次使用 dig命令,查询域的名称服务器,如下所示:


nbNameServer=`$dig NS $url +short | wc -l`

# If there is NS for the given domain
if [ $nbNameServer -gt 0 ]; then

for i in $($dig NS $url +short $TOdig); do

    ipDom=`$dig @$i $url +short $TOdig`

    # Ip found on the $i name server, no need to consult the others
    if [ -n "$ipDom" ]; then
        failed=`echo -e "$ipDom" | egrep "no servers could be …
Run Code Online (Sandbox Code Playgroud)

security domain-name-system spoofing dig

1
推荐指数
1
解决办法
1426
查看次数