Image

知识库 → 使用 NAT 通过 iptables 中的鱿鱼透明进行流量统计

[虚拟服务器]
出版日期: 12.03.2024

默认情况下,服务器在路由器模式下运行,任务是考虑连接到我们服务器的所有本地设备上的所有网络流量。

当前配置如下所述:在 Linux Debian 中设置 NAT(本地网络上的 Internet).

我们会将所有网络流量传输到我们的 Squid,这将使我们能够获得所有网站(按设备分组)的详细统计数据。

1. 安装Squid和ssl组件

apt install squid squid-openssl

1.1 让我们生成一个自签名证书

需要在443端口配置流量重定向

mkdir -p /etc/squid/ssl
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout squidCA.pem -out /etc/squid/ssl/squidCA.pem

1.2 总结一下squid的配置

nano /etc/squid/squid.conf
...
acl localnet src 100.100.100.0/24
...
acl SSL_ports port 443
acl Safe_ports port 80		# http
...
http_access allow localhost
...
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
...
http_port 3128
http_port 3129 intercept
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice all
https_port 3130 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl/squidCA.pem

1.2.1 重启服务

service squid restart

1.3 让我们将网络流量转向我们的代理

iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 3129
iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-ports 3130

1.4 让我们检查一下流量

tail -f /var/log/squid/access.log

让我们尝试从本地网络上的设备打开任何网站;与我们的操作相关的事件应该出现在日志中。

1710202038.351   5012 100.100.100.101 TCP_TUNNEL/500 3815 CONNECT synay.net:443 - ORIGINAL_DST/89.104.77.7 -
1710202108.954  75616 100.100.100.101 TCP_TUNNEL/500 9916 CONNECT synay.net:443 - ORIGINAL_DST/89.104.77.7 -

完成了,现在所有的网络流量都经过squid服务,我们可以使用SARG获得方便可读的日志,如何配置它的描述如下:在SQUID代理服务器上安装和配置SARG

现在,我们办公室所有设备上的所有网络流量都会被考虑在内,我们可以随时查看从哪个设备打开了哪些网站,包括时间和数据量。





暂时没有评论