Articles of iptables

使用u32和扩展头(如何跳过它们?)

我试图过滤有效负载的某些部分,用于扩展头的IPv6数据包(例如Destination Options)。 即使数据包有扩展头,ip6tables也可以正常工作,如–proto udp或–dport 109 。 Netfilter显然知道如何跳过目的地选项来查找UDP标头。 现在,我想使用u32模块来匹配有效载荷中的一个字节(比如说“我希望有效负载的第三个字节是42)。如果数据包没有扩展头,就像–u32 "48&0x0000ff00=0x2800"̀ 48 = 40个字节的IPv6头+8的UDP头)工作正常,如果数据包有一个目的地选项,它不再匹配。我想写一个规则,无论数据包是否有目的地选项或不。 我没有find一种方式告诉Netfilterparsing,直到UDP头(它能够做的事,否则–dport 109不会工作),然后离开u32parsing其余的。 我正在寻找一个简单的方法,否则,正如BatchyX提到的,我可以编写一个内核模块来做我想做的事情。

IP到iptables的IP转发

我有2台服务器。 服务器1与ip 1.1.1.1和服务器2与ip 2.2.2.2 我的域example.com目前指向1.1.1.1,但很快我要切换到IP 2.2.2.2。 我已经为域example.com设置了一个较低的TTL,但是在更改域的IP地址后,仍然会有一些人击中旧的IP。 现在这两台机器运行CentOS 5.8 iptables和nginx作为networking服务器。 我想将所有还在服务器1.1.1.1的stream量转发到2.2.2.2,这样就不会有任何停机。 现在我发现这个教程: http : //www.debuntu.org/how-to-redire-network-traffic-a-new-ip-using-iptables,但我似乎无法得到它的工作。 我启用了IP转发: echo "1" > /proc/sys/net/ipv4/ip_forward 之后,我跑了这两个命令: /sbin/iptables -t nat -A PREROUTING -s 1.1.1.1 -p tcp –dport 80 -j DNAT –to-destination 2.2.2.2:80 /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE 但是当我在浏览器中加载http://1.1.1.1时,我仍然得到了1.1.1.1上的页面,而不是2.2.2.2中的内容。 我究竟做错了什么?

iptables:允许一些端口被转发到Internet

这是我们的networking: WAN <–> Router <–192.168.2.X–> [(eth0) firewall (eth1)] <–192.168.0.X–> LAN 我们需要阻止从局域网客户端访问Internet上的所有内容, 除了 SMTP,IMAP和POP等端口。 我试过下面的规则,但是我不能连接到任何我们想要被允许的端口。 iptables -F iptables -P FORWARD DROP iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp –dport smtp -j ACCEPT […]

IPTables根据连接string重新路由SSH?

我们正在使用一个云服务器(Debian Squeeze),公共IP上的公共端口将stream量传送到内部服务器。 我们正在寻找一种方法来使用IPTables和SSH基于ssh连接string的某些部分(或沿着这些线路)iptables将重新路由ssh连接到“正确”的内部服务器。 这将允许我们使用一个公共端口,然后将ssh连接重新路由到单个服务器。 所以,比如我们希望做一些如下的事情: 用户发出ssh连接(公钥encryption),例如ssh -X -v -p xxx [email protected],但是可能会在iptables中添加一些东西到iptables中去使用 iptables使用该string的某些部分,或者使用类似的方法将连接重新路由到内部服务器 iptables -t nat -A PREROUTING ! -s xxx.xxx.xxx.0/24 -m tcp -p tcp –dport $EXTPORT -j DNAT –to-destination $HOST:$INTPORT ….其中$HOST是服务器的内部IP, $EXTPORT是面向公共端口, $INTPORT是内部服务器端口。 看来,iptables的“string”方面并没有做我们想要的。 我们目前可以基于我们使用的IP表语法进行路由,但是依赖于每个服务器都有一个单独的公共端口,并希望使用一个公共的公共端口,然后根据某些部分SSH连接string或其他手段。 有什么build议么? 谢谢!

这个iptable规则有什么问题?

我在本地运行dnsmasq作为caching服务器,在过去,我允许来自lo +的所有INPUT数据包,并将INPUT策略设置为DROP: -A INPUT -i lo+ -j ACCEPT 现在我决定把这个放在raw表上以加快规则匹配, -A PREROUTING -i lo+ -j ACCEPT 但是这并不如预期的那样。 为什么? 由于数据包首先被原始表处理,然后nat,然后过滤,为什么不是那个规则与旧的一样?

在KVM主机上configurationIPTables以阻止访客网桥stream量

我正在研究一个论文研究项目,而且我很难弄清楚如何让iptables (在KVM主机上运行)阻止目标为BRIDGED KVM guest 虚拟机的stream量(或者说,操纵stream量)。 我无法获得iptables条目(粘贴在下面)来阻止进出虚拟机的stream量。 实际上,我希望我的主机系统充当这些访客虚拟机的防火墙,并且暂时我想通过简单地删除所有发往特定虚拟机的数据包来testing这个function。 在不久的将来,我也想实施更细化的控制,甚至有代理参与。 再次,这应该完全发生在主机层面,而不是在客户层面。 我正在运行CentOS 6,并基于我写的另一个问题: 使用一个网卡为Linux KVM创build多个接口 ,我configuration了以下接口: eth0 br0 tap0 以下是我的每个接口的networking设置脚本: eth0的configuration: DEVICE="eth0" BOOTPROTO="none" NM_CONTROLLED="no" ONBOOT=yes TYPE="Ethernet" UUID="<<UUID-HERE>>" HWADDR=<<MAC-ADDR-HERE>> DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" BRIDGE="br0" br0的configuration: DEVICE="br0" TYPE="Bridge" ONBOOT="yes" BOOTPROTO="dhcp" DELAY=0 tap0的configuration: DEVICE="tap0" TYPE="Tap" BRIDGE="br0" ONBOOT="yes" 我运行了一个CentOS 6虚拟机,并configuration为使用tap0桥接接口。 虚拟机上的networking连接正常。 主机系统没有其他变化。 下面是我添加到FORWARD链中的无法运行的iptables规则( 值得注意的是,我并不是iptables专家 )。 sudo iptables -I […]

将数据包注入不同的NFQUEUE

我有一个NFQUEUE,用于IPv6数据包,挂在ip6tables的PREROUTING链表中。 一旦我在用户应用程序中收到一个数据包,我修改了标题。 事实上,修改了从IPv6到IPv4的报头,并重新注入了数据包。 但是,从日志中,我发现IPv4数据包正在像IPv6数据包一样被对待。 由于每个NFQUEUE映射到AF_INET或AF_INET6,单个NFQUEUE是否可以处理IPv4和IPv6数据包? 是否有可能从一个队列接收数据包,但插入不同的队列? 这是没有道理的,但我想直接注入一个数据包到IP堆栈的IP头在用户空间格式化。 根据RFC 3542,不build议使用带有IPv6的原始套接字。 我无法使用TUN设备来解决性能问题。 很多数据包正在使用TUN设备。

防止远程连接到MySQL的IPTables

我的表规则: sudo iptables -L –line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp — anywhere anywhere tcp dpt:http 2 ACCEPT all — anywhere anywhere state RELATED,ESTABLISHED 3 ACCEPT icmp — anywhere anywhere 4 ACCEPT all — anywhere anywhere 5 ACCEPT tcp — anywhere anywhere state NEW tcp dpt:ssh 6 ACCEPT […]

端口443打开,但IP表拒绝

当我在我的Ubuntu实例上运行以下命令时: $ nmap host 我看到端口443是打开的: Starting Nmap 5.21 ( http://nmap.org ) at 2013-03-19 05:36 PDT Nmap scan report for [host redacted] (ip address redacted) Host is up (0.000034s latency). rDNS record for [ip address redacted]: [host redacted] Not shown: 995 closed ports PORT STATE SERVICE 21/tcp open ftp 25/tcp open smtp 80/tcp open http 443/tcp […]

如何在服务器重启时加载/ etc / sysconfig / iptables

要启用我的服务器端口7070我已经运行 iptables -A INPUT -p tcp -m tcp –dport 7070 -j ACCEPT 通过SSH然后 service iptables save 将规则保存到/etc/sysconfig/iptables文件。 但是,当我重新启动服务器时,保存的规则不适用。 如何在服务器重新启动时自动应用此规则?