我需要实现的目标 我需要计算有多少用户打开正确的网站和子网站 例如`http://stackoverflow.com” 'https://stackoverflow.com/questions'
我有什么 路由器设置在Centos 7上 iptables的 https://github.com/xnsystems/kpcre/wiki/iptables-string-regex
我不能用鱿鱼。 此计数系统无法更改IP头(src和dst IP地址) 这就是为什么我需要计数使用iptables与日志选项 或者可能有软件会在没有任何数据包修改的情况下对网址进行计数
问题 我找不到一种方法,我会看到有多少IP地址(有多少用户)点击了正确的网址
我的iptables行看起来像这样,不起作用 我的意思是匹配所有网址(包括所有子网址)不仅http://stackoverflow.com
sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string "^http://stackoverflow.com$" --algo regex -j ACCEPT
请帮我解决此案。
更新:
以下三个例子请尝试让它们工作
sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string stackoverflow.com --algo regex -j ACCEPT
sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string stackoverflow.com/documentation --algo regex -j ACCEPT
sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string stackoverflow.com/questions'; --algo regex -j ACCEPT
如你所见,我使用了--algo regex 如果你知道没有它的另一个解决方案,请建议。
答案 0 :(得分:0)
我检查了规范链接,它不是很完整(例如\b
似乎知道,但没有解释),但我认为你需要的正则表达式是:
^(http:\/\/){0,1}[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+(\/[a-zA-Z0-9_-]+){0,}$
更新:允许http://
前缀和/documentation
后缀。
请尝试。
未指定捕获组()
的使用,但这通常有效
如果你给出的例子匹配,不应该或不匹配,我应该调整这个答案。
最简单的调整是在[a-zA-Z0-9_
和-]
之间在两个位置插入更多字符(允许使用URL)。
答案 1 :(得分:0)
包含数据包中URL的行不仅包含URL,还包含一些额外的关键字。
如果您想阻止“http://stackoverflow.com” ,那么您应该指定如下网址:
iptables -I OUTPUT -p tcp --dport 80 -m string --string "/\/ .+Host: stackoverflow.com/si" --algo regex -j DROP
或者如果您想要屏蔽“http://stackoverflow.com/questions”仅,那么您应该像这样指定网址:
iptables -I OUTPUT -p tcp --dport 80 -m string --string "/\/questions .+Host: stackoverflow.com/si" --algo regex -j DROP