我正在使用一个用户空间的TCP / IP堆栈为特定的应用程序。 我在Linux内核空间堆栈中看到了Tproxy支持作为内核模块。 但是我需要用户空间堆栈中的类似实现。 这样我就可以了解tproxy的当前内部工作。 任何人都可以帮助我在User Space中实现它,或者请解释tproxy的内部工作,我的意思是“标记数据包”,“在入站和出站stream程中扭曲目的IP”,“将所有这些保存在内部表结构中”等等.. 提前致谢..
我有一个处理ICMP请求的netfilter队列应用程序。 在某些情况下,我想更改发送回客户端的有效负载。 我的代码目前调用这个: nfq_set_verdict(qh, id, verdict, ret, buffer); 我想知道是否可以通过更改缓冲区来更改有效负载。 我被告知不能使用Netfilter队列来更改ICMP请求的有效载荷。 假设这是真的,在Linux机器上最好/最简单的方法是在发送回客户端之前修改ICMP响应的有效负载?
我需要嗅探特定的Linux用户(UID)的stream量。 我用iptables / NFLOG( http://wiki.wireshark.org/CaptureSetup/NFLOG )这样做很好。 我的问题是,NFLOG改变pcap封装“NFLOG”(从“以太网”)和一些工具(如tcpflow)不能读取它了。 我的问题是:是否有可能将这种pcap转换为“旧式”pcap文件?
iptables –append(-A)命令允许您添加多个相同的规则,并且似乎必须运行相同数量的–delete(-D)命令才能再次删除它们。 iptables的manpage说–delete命令可以从选定的链中删除一个或多个规则。 如何获取–delete命令以在单个操作中删除所有匹配的规则? 在一个脚本中,我可以循环调用 – 删除,直到我得到一个非零退出状态,但这似乎是蹩脚的。 $ # Add two identical rules. $ /sbin/iptables –append OUTPUT –protocol tcp –destination example.com –jump DROP $ /sbin/iptables –append OUTPUT –protocol tcp –destination example.com –jump DROP $ /sbin/iptables -L OUTPUT -v Chain OUTPUT (policy ACCEPT 6 packets, 780 bytes) pkts bytes target prot opt in out source destination […]
我正在尝试直接将Docker容器连接到主机的networking。 configuration如下一台主机在子网中有一个接口(eth0),比如10.0.15.0/24。 eth0上的IP为10.0.15.5/24。 我定制了docker0网桥,使用eth0提供的子网内的子网,即10.0.15.64/26。 所以docker可以使用这个/ 26中的IP给容器,我希望容器可以从networking的其他部分直接访问。 docker桥还有一个IP集,即10.0.15.65/26。 当一个容器被创build时,它会得到一个IP,比如10.0.15.66/26。 现在,我做了一些pingtesting: networking上的任何东西都可以ping通10.0.15.5(主机的eth0) networking上的任何东西都可以ping通10.0.15.65(主机的docker0网桥) 主机可以ping通10.0.15.66(容器的ip) 容器可以ping任何networking上的东西 除主机以外的任何东西都无法在10.0.15.66上ping容器 IP转发已打开 [root@HOSTNAME~]# cat /proc/sys/net/ipv4/ip_forward 1 我在这里错过了什么? 连接到docker0桥的容器应该可以从我认为的networking中获得。 预期的行为容器应该可以从networking上的任何地方ping,就像docker0桥等。 任何想法或帮助将不胜感激!
我到处寻找答案,但没有任何运气。 我在我的服务器上安装了node.js。 我创build了标准的“Hello World”示例,如下所示: var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8080, "0.0.0.0"); console.log('Server running at http://0.0.0.0:8080/'); 在服务器上运行脚本之后: node app.js 我可以连接内部端口808,看到Hello World消息,但是当我尝试连接到端口8080我的服务器外部我得到一个“无法连接到服务器”的错误。 我也试过这个在我的听function: etc.. }).listen(8080, "204.xxx.xxx.xxx"); (用我真实的外部IP地址),并没有任何运气。 我试图通过添加到iptables接受8080上的连接: iptables -A INPUT -p tcp –dport 8080 -j ACCEPT 但仍然撞墙。 当我运行netstat时,我得到: tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN – tcp 0 0 […]
我正在写一个使用libc的应用程序,为此我正在寻找一个iptables的api,这样我就可以使用我的程序添加防火墙规则了。在那里有任何可用的api来做到这一点。
我尝试从我的lxc容器redirect端口到环回。 我的lxc容器configuration了lxcbr1桥11.0.3.1。 我尝试从主机连接到netcat到lxc,从lxc连接到主机。 成功。 本地主机: # nc -l 1088 LXC: # nc 11.0.3.1 1088 Hello! 和localhost看消息:“你好!” 成功! 当我这样redirect端口: # iptables -t nat -A PREROUTING -i lxcbr1 -p tcp -d 11.0.3.1 –dport 1088 -j DNAT –to-destination 127.0.0.1:1088 # nc -l 127.0.0.1 1088 此后,我尝试从lxc容器连接: # nc 11.0.3.1 1088 Hello ! 但本地主机没有看到这个消息。 我在哪里错了? 我发现这个答案: https : //serverfault.com/questions/211536/iptables-port-redirect-not-working-for-localhost 有声音的话,回环不使用PREROUTING。 […]
当我想从文件恢复我的iptables规则时,我得到了这个错误。 iptables-restore v1.4.21: The -t option (seen in line 5) cannot be used in iptables-restore. Error occurred at line: 5 Try `iptables-restore -h' or 'iptables-restore –help' for more information. 有我的iptables: *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -t nat -A POSTROUTING -o eth0 -j MASQUERADE -A FORWARD -i eth0 -o lxcbr0 -m […]
基本上,我想写一个内核模块,为ebtables添加一个可能的filter。 然后我需要告诉ebtables在我设置的桥上使用我的filter。 我需要编写自己的模块的原因是我想在连续的包之间引入延迟(出于某种testing原因)。 为了演示,我的networking原来有这样的stream量: +++—————–+++—————–+++—————–+++—————– 其中+显示一个包的stream量,并且-表示没有包裹在线上。 我想在两者之间架起一座桥梁,这样数据包的模式就会变成这样: +—-+—-+———+—-+—-+———+—-+—-+———+—-+—-+——— 这意味着我将确保每个数据包到达之间会有一定的延迟。 现在我已经写了下面这个简单的代码,我基本上从linux-source / net / bridge / netfilter / ebt_ip.c: static bool match(const struct sk_buff *skb, const struct xt_match_param *par) { printk(KERN_INFO"match called\n"); return true; // match everything! } static bool check(const struct xt_mtchk_param *par) { printk(KERN_INFO"check called\n"); return true; // pass everything! } static struct xt_match […]