标签: iptables

在大型系统(约 2000 个用户)中进行流量控制的最佳解决方案是什么?

以下情况:我们是一群学生管理当地宿舍的互联网连接,共有大约2000名最终用户。

我们有一个流量积分系统,每 MB 下载或上传都会花费积分,新积分按小时添加。目前,我们会在用户用完所有积分后阻止其访问互联网(通过将他置于 Debian 网关路由器上 iptables 中的 REJECT 策略中)。

我们只想限制用户的带宽。做这个的最好方式是什么?

简单的答案是对用户的交换机端口(主要是 Cisco Catalyst 3550)设置速率限制。然而,这是不可取的,因为我们自己的网络内部和到大学网络的流量应该保持无限。有没有办法限制 Cisco IOS 中具有特定目标或源 IP 范围(即出口和入口)的数据包的带宽?我找不到任何东西。

另一种方法是控制我们网关路由器上的流量。我想到了几种解决方案:

  • tc 或 tcng - 似乎两者都具有相当神秘的语法,并且都没有提供用于执行每个 IP 流量控制的良好功能。为这么多人准备的专用 QDisc 可能会大大降低路由器的速度。此外,关于两者的文档已经过时了。

  • shorewall - 似乎有一个相当简洁的配置语法,但是,我不确定它是否可以处理这么多的流量和用户,以及它是否适用于 per-IP 流量限制

  • pfSense - 看起来像一个用于像我们这样的目的的操作系统。但是,这需要我们完全重新安装我们的网关路由器。我们没有其他 BSD 系统,pfSense 也需要有非常好的流量统计功能(我们目前在那里使用 fprobe-ulog 和 ulog-acctd)。

你的经验是什么?哪种解决方案适合我们的需求并且最容易维护?你有其他想法吗?

如果您需要有关我们系统的任何其他信息,请随时询问。

提前致谢。


编辑:我已经用iptables和实现了系统tc

每个用户都有一个 /28 子网、一个 VPN IP(都来自 10.0.0.0/8)和一个外部 IP,所有这些都通过一个 iptables 链进行控制。这条链只有一个规则,一个简单的RETURN.

每五分钟,一个 Python 脚本读出这些规则的字节计数器。它会重置计数器并更新我们 PostgreSQL 数据库中用户的流量点帐户。

如果用户的点数余额低于某个阈值,则会为该用户创建两个 tc 类(一个用于传入,一个用于我们网关路由器上的传出接口),IP 将输入到属于这些类的 tc 过滤器中。这些课程受 HTB 限速。

与以前的系统相比fprobe-ulog, …

networking linux cisco iptables traffic-shaping

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

安全地增加 ip_conntrack_max ?

我经常在日志中看到以下内容:

内核:ip_conntrack:表已满,正在丢弃数据包。

目前,我将 ip_conntrack_max 设置为 65536(默认为 RHEL5)。

记住内存使用情况,我可以安全地增加多少这个值?我在这个盒子上有 4GB 内存。这台机器的功能之一是作为静态内容服务器,这可能解释了高连接数,也意味着我希望尽可能多地保留用于缓存的操作系统内存。

另外,以下两者有什么区别?/proc/sys/net/ipv4/netfilter/ip_conntrack_max /proc/sys/net/ipv4/ip_conntrack_max

我应该编辑哪个?

谢谢!

networking iptables

11
推荐指数
2
解决办法
2万
查看次数

IPTables:只允许 SSH 访问,没有其他的进出

您如何配置 IPTables 以便它只允许 SSH 进入,而不允许其他流量进出

任何人都可以推荐任何安全预防措施?

我有一台服务器,我相信它已成功从 GoDaddy 迁移,我相信它不再使用。

但我想确定只是因为......你永远不知道。:)

请注意,这是来自 GoDaddy 的虚拟专用服务器......这意味着没有备份,几乎没有支持。

firewall iptables godaddy

11
推荐指数
1
解决办法
5万
查看次数

iptables 中的 tcp 标志:RST SYN 和 RST 和 SYN RST 之间有什么区别?什么时候使用 ALL?

我正在为虚拟专用服务器开发防火墙,我正在研究的一件事是端口扫描仪。TCP 标志用于保护。我有2个问题。
规则:

-p tcp --tcp-flags SYN,ACK,FIN,RST SYN -j DROP
Run Code Online (Sandbox Code Playgroud)

第一个参数表示检查带有 SYN 标志的数据包 第二个参数表示确保设置了标志 ACK、FIN、RST SYN
并且在这种情况下(有匹配项),丢弃 tcp 数据包

第一个问题:
我理解 RST 和 RST/ACK 的含义,但在第二个参数中使用了 RST SYN。
RST SYN 和 RST 和 SYN RST 有什么区别?
3 次握手中是否有“SYN RST”标志?

第二个问题是关于两者之间的区别

-p tcp --tcp-flags SYN,ACK,FIN,RST SYN -j DROP    
Run Code Online (Sandbox Code Playgroud)

-p tcp --tcp-flags ALL SYN,ACK,FIN,RST SYN -j DROP    
Run Code Online (Sandbox Code Playgroud)

什么时候应该使用 ALL ?
当我使用ALL时,这是否意味着如果带有syn标志的tcp数据包没有设置ACK“和”FIN“和”RST SYN标志,就不会有匹配?

firewall iptables tcp flags

11
推荐指数
2
解决办法
3万
查看次数

iptables 规则允许所有出站本地来源的流量?

我想知道是否有人可以帮助我制定以下 iptables 规则:

我们希望允许任何和所有本地来源(如在运行 iptables 的服务器上)流量。

DNS、HTTP 等……所有这些。应该允许由运行 iptables 的服务器发起的任何连接。

目前我们基本上使用的是 OUTPUT 默认策略,ACCEPT。这样对吗?输入被阻止,所以我假设这意味着连接(除了我们允许的那些)无法启动,因为它们会在我们这边达到 OUTPUT 策略之前被丢弃?

抱歉,我的 iptables 技能很弱 ;)

非常感谢你。

iptables

11
推荐指数
1
解决办法
7万
查看次数

拒绝 AWS ELB 上的 IP 地址

我或多或少地遵循 AWS 上的配置:

具有 3 台机器 o 3 个不同可用区的弹性负载均衡器。我的安全组允许 0.0.0.0/0:80 因为它是我的 rails 应用程序(nginx、unicorn)。

我想知道是否有任何方法可以拒绝特定公共 IP 地址访问我的应用程序?我一直在阅读 AWS 文档,但由于 SG 是“拒绝所有”,因此无法拒绝一个特定的 IP 地址。

有任何想法吗?负载均衡器后面的 3 台机器上的 iptables?

谢谢!

ip iptables amazon-ec2 deny amazon-web-services

11
推荐指数
2
解决办法
2万
查看次数

将 Open vSwitch 交换机连接到真实网络:iptables masquerade

我正在使用 Open vSwitch 在 vi​​rtualBox 来宾计算机之间创建交换网络,并且我希望主机操作系统(Ubuntu 12.04)加入该网络并将其配置为该虚拟网络的网关:

首先,我创建了一个 vswitch 并添加了端口以连接设备(虚拟机将它们用作桥接接口):

ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0
Run Code Online (Sandbox Code Playgroud)

之后,我静态设置了 Lubuntu 12.04 虚拟机的 ip:

ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

在主机 os 端,我还设置了 ip 地址:

ifconfig sw0 192.168.1.1/24 up
Run Code Online (Sandbox Code Playgroud)

此时,我可以从 Lubunut ping 到 Ubunutu。我现在想在主机中使用 IP 伪装将流量从网络 192.168.1.0/24 转发到我的物理接口(连接到 Internet):

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

因此,从 Lubuntu(虚拟机),我可以 ping Ubuntu eth1 接口,但无法访问真实网络(例如:真实 LAN 上的网关),我尝试过:

nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 …
Run Code Online (Sandbox Code Playgroud)

iptables ip-forwarding openvswitch

11
推荐指数
1
解决办法
2万
查看次数

--limit 1/s 和 --limit-burst 在 iptables 规则中到底是什么意思?

我正在使用 CentOS 5.x,试图在我的一台服务器上考虑以下 iptables 规则:

-A RH-Firewall-1-INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

在另一台服务器上,我有:

-A RH-Firewall-1-INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 3 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我知道这两个规则都旨在允许(和限制)传入的 ping 请求,但limit-burst选项是什么?这些津贴是基于每个主机的吗?或者它们是否适用于任何/所有传入的 ICMP 连接?

redhat iptables centos icmp

11
推荐指数
2
解决办法
3万
查看次数

linux命令使用netstat和iptables防止dos攻击

我想为每个 ip DROP 200 多个请求以防止 ddos​​ 攻击。这是我用来检测每个 ip 请求数的命令:

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)

现在我想将所有发出超过 200 个请求的 ip 地址添加到 IPtables 中,以便 DROP 输入和输出。

networking security command-line-interface iptables

11
推荐指数
2
解决办法
5380
查看次数

网络命名空间内的 iptables LOG 规则

我正在尝试为 docker 容器设置 iptables 规则。我正在使用nsenter在容器的网络命名空间内执行 iptables 命令:

# log access to port 8080
PID=$(docker inspect --format "{{.State.Pid}}" $ID)
/home/ubuntu/nsenter -n -t $PID iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 8080 -j LOG
Run Code Online (Sandbox Code Playgroud)

除了LOG规则之外,这种方法非常有效。那些似乎没有在任何地方登录。请注意,应用于主机系统的相同规则有效并记录到/var/log/kern.log.

我在哪里可以找到这些日志规则的输出?这是网络命名空间的已知问题/限制吗?

networking iptables containers docker

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