AFAIK,NIC 从局域网中的线路接收所有数据包,但拒绝那些目标地址不等于其 ip 的数据包。
我想开发一个应用程序来监控用户的互联网使用情况。每个用户都有一个固定的 IP 地址。
我和其他一些人连接到DES-108 8 端口快速以太网非托管桌面交换机
如前所述,我想捕获所有用户的所有流量,而不仅仅是那些属于我的数据包。
我应该如何强制我的 NIC 或其他组件接收所有数据包?
出于好奇,我正在阅读一些关于透明 TOR 代理的教程,因为从网络的角度来看,这是一个非常有趣的话题。与仅使用tun/tap接口且我完全清楚的VPN 网关相反,TOR 代理使用单个端口。所有教程都重复魔术线:
iptables -t nat -A PREROUTING -i eth0 -p tcp --syn -j REDIRECT --to-ports 9040
Run Code Online (Sandbox Code Playgroud)
哪里eth0是输入 (LAN) 接口,9040是一些 TOR 端口。问题是,从网络的角度来看,我完全不明白为什么这样的事情是有意义的。
根据我对redirect/ dst-natchains 的理解以及它在物理路由器中的工作方式,dst-natchain 需要dst-port和dst-addr BEFORE路由决定被采取并将它们更改为其他东西。例如:
dst-nat:192.168.1.2:46364 -> 88.88.88.88:80dst-nat:192.168.1.2:46364 -> 99.99.99.99:8080并且99.99.99.99:8080是 IP 数据包流通道中的进一步链所看到的(例如filter表),这就是从现在开始离开设备后数据包的样子。
现在互联网上很多人(包括在这个stackexchange上)声称与设置为接口的本地地址redirect基本相同。有鉴于此,这条规则:dst-natdst-addr
iptables -t nat -A PREROUTING -i eth0 -p tcp --syn …Run Code Online (Sandbox Code Playgroud) 每当任何 TCP 请求发送到特定 IP 地址时,有人能给我一个关于如何设置基本拒绝规则的提示吗?我正在使用PF 数据包过滤器。有什么帮助吗?
UDP - 必须监听端口。TCP - 必须连接到服务器。
我试过netcat和socat。
nc -v -u -l -p 3333 | nc -v 127.0.0.1 50000
socat -v UDP-LISTEN:3333,fork TCP:localhost:50000
Run Code Online (Sandbox Code Playgroud)
两者都在工作——他们传递了信息——但这条线并没有结束。如果我关闭 netcat/socat,VLC 只会接受命令。
我监视了与的连接,sockettest消息在同一行中一个接一个,如下所示:
playpausestopexitadd
Run Code Online (Sandbox Code Playgroud)
我需要结束该行,以便传输的消息如下所示:
play
stop
exit
add
Run Code Online (Sandbox Code Playgroud)
也许数据包没有结束?
我想知道是否nc或socat可以选择在一段时间后发送数据包/结束行。
如果我\n按照@roaima 的建议添加到输出中,我会得到play\nstop\nplay\n一行。
我在配置 iptables 时遇到了麻烦:一些客户端向服务器发送消息。我希望主机服务器在本地处理消息(主机 A,正常情况下),但另外对于每条消息(tcp 数据包)将数据包的副本发送到另一台主机(主机 B,运行服务器的修改版本,我想看看相同消息的行为如何,以便我可以比较两台服务器)。应该用iptables来完成。我已尝试使用以下命令。这些将数据包发送到 B,但主机 A 不处理消息(应该由第二个命令完成?)。
iptables -t nat -A PREROUTING -p tcp --dport 31090 -j DNAT --to-destination IP_HOST_B:32090
iptables -t nat -A POSTROUTING -p tcp --dport 32090 -j SNAT --to-source IP_HOST_A:31090
Run Code Online (Sandbox Code Playgroud)
我在配置中遗漏了什么来实现我的目标?
谢谢你。
我试图在 Linux 上实现这个目标(不确定是否可行以及如何实现):我需要编写一个程序来拦截接口上的所有 IP 数据包,并将这个数据包传送到一组特定的用户空间程序.
通过拦截,我的意思是,我的程序(可能是内核模块或特殊的用户空间程序)捕获了一个 IP 数据包,然后该数据包不再通过 IP 堆栈。
例如,假设操作系统正在运行大量进程(在内核空间或用户空间中),A、B、C、D...等。如果在某个接口接收到 IP 数据包,请说 eth2 ,我只希望A,B看到这个包,其他所有进程甚至都知道这个包的存在。
有人能把我带到正确的方向吗?
我们正在使用 iptables 防火墙。它根据定义的规则记录和删除各种包。iptables 日志文件条目如下所示:
2017-08-08T19:42:38.237311-07:00 compute-nodeXXXXX kernel: [1291564.163235] drop-message : IN=vlanXXXX OUT=cali95ada065ccc MAC=24:6e:96:37:b9:f0:44:4c:XX:XX:XX:XX:XX:XX SRC=10.50.188.98 DST=10.49.165.68 LEN=60 TOS=0x00 PREC=0x00 TTL=57 ID=14005 DF PROTO=TCP SPT=52862 DPT=50000 WINDOW=29200 RES=0x00 SYN URGP=0
Run Code Online (Sandbox Code Playgroud)
有没有办法获得丢弃的数据包的数量?我想计算最后一分钟、一小时内丢弃的数据包数量等指标...... 很快。
主要目的是监控配置错误和安全漏洞。如果防火墙规则有错误,就会突然开始丢弃一堆数据包。类似地,如果发生攻击,我们预计被拒绝的数据包数量会发生变化。
如何检查数据包套接字支持是否已编译到我的内核中?我正在运行 Crunchbang,一个基于 Debian 的发行版。
我试图找到一种方法来记录根据 iptables 中的规则丢弃的数据包(可能使用 tcpdump)的全部内容。
目前,我有一个规则来记录这些数据包(带有日志前缀),然后按照这个规则来删除它们。
有没有办法记录这些数据包的内容以供以后查看?
所以,我正在寻找这个:
2 & 3 甚至可以组合。
我的理解是 tcpdump 可能无法做到这一点,因为它在iptables之前检查数据包,因此不会只记录丢弃的数据包。
谢谢。
我很高兴通过端口限制上传速度 - 但真的想通过进程限制下载。
看来 iptables 确实具有按进程以--pid-owneror的形式匹配和标记数据包的功能--cmd-owner- 但现在两者都已被删除?
$ iptables -m owner --help
...
owner match options:
[!] --uid-owner userid[-userid] Match local UID
[!] --gid-owner groupid[-groupid] Match local GID
[!] --socket-exists Match if socket exists
Run Code Online (Sandbox Code Playgroud)
似乎有按用户或组匹配的选项,但没有按进程匹配的选项。
我知道trickle和wondershaper - 但都不允许对已经运行的进程进行整形
当有人尝试在端口 25565 上连接到我的我的世界服务器时,我想启动它。我有一个服务器插件,它在没有玩家在线的情况下在 x 分钟后关闭它。使用 shell 脚本,我创建了一个循环,在服务器关闭时启动它:
#!/bin/bash
while true
do
# run server
java -Xms2048M -Xmx2048M -Djava.awt.headless=true -jar "craftbukkit.jar"
# server shut down
# run MCSignOnDoor
java -jar MCSignOnDoor.jar --sentrymode -m "Gone Fishin' Back in Five Minutes!"
# McSignOnDoor shut down
# stop loop if error code is not 12
# so only restart the server when the program ended because of a packet
if [ "$?" -ne "12" ]; then
break
fi
done
Run Code Online (Sandbox Code Playgroud)
McSignOnDoor 是一个 Java 程序,它模拟了一个活动服务器,一旦有人用退出代码 12 …
根据我对来自 的数据进行的计算ifconfig,我的路由器和计算机之间的以太网连接对于 TX(接近 1500 的 MTU)平均为 1298 字节/数据包,而对于 RX 只有 131 字节/数据包。什么会导致平均 TX 与 RX 数据包大小出现如此大的差异?
我正在阅读一篇关于如何嗅探网络数据包的文章。(当然仅用于知识目的)。我遇到了这些特殊的线条。
例如,假设我正在嗅探网络上的流量,并且您登录了 Facebook 并选中了在这台计算机上记住我复选框。这表示 Facebook 向您发送浏览器存储的会话 cookie。我可能可以通过数据包嗅探收集该 cookie,将其添加到我的浏览器,然后访问您的 Facebook 帐户。
那么,假设我的 Linux 客户端受到了威胁并且目前不知道它,这是否意味着如果我点击remember me了这台机器登录我的帐户,我的个人信息就会受到影响?被入侵机器的cookie信息如何可以在任何黑客的浏览器中使用?