Articles of iptables

使用iptables为多个隔离networking设置NAT

我有一个网关机器连接到多个内部networking,我想build立NAT。 但是,这些networking需要彼此隔离,这是我无法想象的。 这是我的configuration: eth0:192.168.1.0/28(上行),网关分配为192.168.1.1 eth1:192.168.1.16/28(下游1),网关分配为192.168.1.16 eth2:192.168.1.32/28(下行2),网关分配为192.168.1.32 到目前为止,我已经configuration了iptables来允许默认链: iptables -P INPUT ALLOW iptables -P OUTPUT ALLOW iptables -P FORWARD ALLOW 然后,我在内核中启用了IP转发,并设置了iptables: echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source 192.168.1.1 iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT 但是,这种configuration允许eth1上的一台机器访问eth2上的另一台机器,即使我没有明确指定一个允许这样做的规则。 我如何隔离这些networking,或者至多只允许访问某些主机/端口?

为什么远程IPredirect到本地服务器?

我有一个装有OpenVZ容器的Linux服务器的机架,并且由于某种原因,当我尝试从几个OpenVZ容器(例如使用telnet)连接到某个远程IP时,我终于连接到另一个服务器而不是本地networking。 到目前为止,我已经看到了以下可能性: 检查我试图做出站连接的服务器,以确保没有将远程IPredirect到本地IP的iptables规则。 检查我们的路由器/防火墙,以确保没有规则,将这个出站连接redirect到本地IP。 检查了OpenVZ容器的错误连接,并确保它没有将远程IPconfiguration为IP别名。 所有OpenVZ容器都运行CentOS 5.x. 我确定这很简单,但是我正在用尽想法。

尽pipe被列入黑名单,但nmap列出了主机

我有一个iptables规则设置,将地址标记为可疑,如果他们连接在某些端口或任何未打开的端口。 如果超过三个连续的连接没有身份validation,那么地址是黑名单。 发生黑名单后,远程主机将被阻止访问所有端口。 但是,尽pipe地址是黑名单时丢包,nmap仍然能够检测到主机已启动。 nmap使用什么来确定这个? 如何使主机完全消失,如在特斯拉线圈样式? root@yellowtail:~# nmap -Pn 10.42.0.48 Starting Nmap 6.00 ( http://nmap.org ) at 2014-02-12 21:56 GMT Nmap scan report for 10.42.0.48 Host is up (0.00022s latency). All 1000 scanned ports on 10.42.0.48 are filtered MAC Address: EC:43:F6:C0:B1:E8 (Unknown) Nmap done: 1 IP address (1 host up) scanned in 22.11 seconds 更新:DROP的规则path […]

iptables阻止本地连接到mongodb

我有一个VM(Ubuntu 12.04.4 LTS)与mongodb(2.0.4),我想限制与iptables只接受SSH(入/出),没有别的。 这是我的设置脚本如何设置规则: #!/bin/sh # DROP everything iptables -F iptables -X iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT DROP # input iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -s 127.0.0.1 -j ACCEPT # accept all ports for local conns # output iptables -A OUTPUT -m […]

iptables似乎没有将SNAT应用于原始套接字上发送的数据包

我正在从用户空间程序发送数据包到我的无线接口wlan0。 我已经用iptables设置了一个SNAT规则,如下所示 iptables -t nat -A POSTROUTING -o wlan0 -j SNAT –to 192.168.1.3 它适用于从我的机器出来的所有正常stream量。 我正在开发一个程序,需要从第2层开始创build数据包.Iptables不会将SNAT应用于此程序发送的任何第3层数据包。 有没有什么办法可以从第二层的用户空间发送数据包,仍然有NAT应用到他们? 我已经从超级用户转发了这个。 如果我在那里得到任何东西,将会更新。

TPROXY不适用于HAProxy,Ubuntu 14.04

我试图在Ubuntu 14.04中使用HAProxy作为使用TPROXY的完全透明代理。 HAProxy将在第一台服务器上111.111.250.250 ,其中eth0 111.111.250.250和eth1 10.111.128.134 。 单个平衡服务器也有eth1和eth0 。 eth0是面向公众的networking接口,而eth1是两个服务器所在的专用networking。 问题:我可以直接(通过eth1 )连接到平衡服务器的端口1234,但无法通过Haproxy端口1234(通过eth0redirect到1234)到达平衡服务器。 我错过了这个configuration中的东西吗? 从/etc/haproxy/haproxy.cfg删除线source 0.0.0.0 usesrc clientip ,haproxy工作但不透明。 在HAProxy服务器上 目前的内核是3.13.0-24-generic 。 iptables v1.4.21 ,我认为它支持iptables v1.4.21 ,但不知道如何检查。 内核似乎有TPROXY支持: # grep TPROXY /boot/config-3.13.0-24-generic CONFIG_NETFILTER_XT_TARGET_TPROXY=m HAProxy编译与TPROXY支持: haproxy -vv HA-Proxy version 1.5.3 2014/07/25 Copyright 2000-2014 Willy Tarreau <[email protected]> Build options : TARGET = linux26 CPU = x86_64 CC = […]

在PREROUTING IP转发时,不能从同一台服务器上进行curl

我有一个Ubuntu web服务器,使用iptables PREROUTING将端口80转发到8000 。 因此,Web进程在端口8000上进行侦听。 现在我想从一台服务器上运行一个curl到一个运行在其上的web应用程序。 但是这个问题连接拒绝 : $ curl http://my.webite.com/on/same/server curl: (7) Failed connect to my.webite.com:80; Connection refused curl 8000端口工作(但它必须工作在端口80)。 我还确保该Web服务器在所有接口上进行侦听(不仅在物理接口上): $ netstat -ntl | grep LISTEN … tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN … 我的应用程序域( my.webite.com )也parsing为物理接口IP。 为什么我的连接被拒绝 ?

在Intranet上运行自己的DNS,如何从客户端到达外部的DNS

场景: 我正在创build一个在学生实验室中运行的8个Windows 7工作站的networking。 他们应该浏览互联网,但不能从他们的内部网到达。 为了达到这个目的,我运行了带有2个NIC的Ubuntu 14.04服务器。 一个网卡(em1)连接到我们的部门VLAN,即互联网。 我通过iptables的MASQUERADEfunction通过IPV4转发将Workstation-intranet路由到NIC em2。 原理: internet | departments VLAN | Ubuntu server / iptables | Switch——- | | | | | WWWWW … 经过一些打嗝,这工作正常,看到我的其他职位的全部图片(和我的一些configuration): askubuntu Ubuntu服务器是VLAN中唯一具有有效IP的机器,需要使用部门VLAN的DNS服务器,否则无法访问互联网。 当我通过我的其他post发现,所有的客户端也需要使用我们的部门的DNS服务器,因为他们的软件包通过Ubuntu路由器运行,并伪装成包。 问题: 现在,我想通过Samba部署一个Microsoft Active Domain Controller。 但是:我需要在Intranet上运行我自己的DNS才能使用Microsoftnetworking中的所有酷function。 主机名需要解决的虚拟磁盘,login,组策略等。如果我这样做,但是,机器将无法再使用外部/部门的DNS了,因此不能要求从互联网包。 如何解决这个问题? 我可以使用部门DNS来parsing内部网中的主机名吗? (可能不是吧?) 有没有办法,我的工作站从我的DNS获得他们的名字,但要求在同一个IP下的外部DNS的互联网包? 这是为什么通常有两个DNS服务器的字段? 我可以将外部DNS与我自己的DNS并行重新路由到内部网吗?

阻止某些服务器的stream量

在我的组织中,我想确保所有服务器只能从内部访问。 唯一的例外是邮件和networking服务器。 什么是最好的方法来做到这一点? 我自己的build议是阻止所有传入的stream量通过“iptables”,除了邮件和networkingstream量(和SSH)这是最好的办法做到这一点,还是有什么更好的build议吗? 谢谢! 编辑:我发现了一个非常类似于我们的拓扑:

iptables未知选项`–connlimit-upto'

我每天都从相同的几个IP地址类的数千个请求中受到很大打击。 最近它占用了我所有的MYSQL连接,并且不允许任何新的连接。 我正在尝试configuration防火墙来设置连接限制。 这是我现在的规则 -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP -A INPUT -p tcp -m tcp ! –tcp-flags FIN,SYN,RST,ACK SYN -m state –state NEW -j DROP -A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP -A INPUT -i lo -j […]