Articles of iptables

iptables伪装/ NAT防火墙与IP一起工作,在某些连接上失败,特别是在涉及域名时

问题描述: 两个网关(“防火墙”)系统中的一个失败了,所以我在replace硬件上生成了一个“完全相同的”,结果发现当我切换一台内部机器去通过新的网关时,ping失败了。 切换回来,它的作品。 所以,我尝试了一个IP ping,避免DNS,它的工作。 在故障排除期间,我发现如果通过旧的网关路由,我可以运行“挖掘”就好了,但是通过新的路由器,它会失败: [root@MyHost sysconfig]# dig @67.100.88.26 google.com mx ; <<>> DiG 8.2 <<>> @67.100.88.26 google.com mx ; (1 server found) ;; res options: init recurs defnam dnsrch ;; res_nsend to server 67.100.88.26: Connection refused [root@MyHost sysconfig]# 如果我把它切换回另一个网关,一切正常。 这表明客户端框没有任何问题,但防火墙实际上并不完全相同,即使它似乎是。 我添加了丢弃数据包的日志logging,但内部系统完全没有! 请注意,这是隐含的DNS / iptables交互问题。 观察“修复DNS,你会解决你的问题”只是从不同的angular度来重述问题。 问题是:具体来说,关于这个防火墙的configuration是什么,当相同的机器,相同的操作系统等,在同样的iptablesconfiguration下工作正常时,以及与同样精确的testing系统(以及任何可能对/错的它的resolve.conf)。 (另外请注意:我认为这个问题没有评论为什么要投下这个蛮胆的)。 例子: [root@MyHost sysconfig]# ping google.com ping: […]

简单的iptables规则

我有两个networking接口eth0和别名eth0:1,这是我的内部networking。 我想阻止端口8140,但也有一个规则允许任何从eth0:1子网(192.168.1.0/24) 这是我有的规则,但似乎在所有接口上阻止8140 iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp –destination-port 8140 -j DROP Chain INPUT (policy ACCEPT 7 packets, 400 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all — * * 192.168.1.0/24 0.0.0.0/0 0 0 DROP tcp — * * 0.0.0.0/0 0.0.0.0/0 tcp […]

在CentOS上打开端口

我想在CentOS上更改我的SSH端口。 但是首先我要确保这个端口在打开之前是打开的。 由于SSH是我访问服务器的唯一方式,我不想locking自己:-) 我已经使用以下两个命令来添加一个iptables规则: iptables -I INPUT -p tcp –dport 4444 -j ACCEPT /etc/init.d/iptables save 之后,我用以下命令testing了它: nmap -v -sV localhost -p 4444 结果如下: Host localhost.localdomain (127.0.0.1) appears to be up … good. Interesting ports on localhost.localdomain (127.0.0.1): PORT STATE SERVICE VERSION 4444/tcp closed unknown 国家closed所以看起来我没有正确打开端口。 我应该怎么做开放端口?

在Ubuntu服务器上的nfsclient

我有Cent OS上运行的nfs服务器。 iptables设置,我有固定的端口设置。 所以,服务器工作正常。 我尝试在Fedora机器上安装nfs卷,一切正常。 当我尝试在Ubuntu机器上挂载nfs卷时,出现错误消息,意味着rpc.statd没有运行,远程锁也不能工作。 我已经检查,它正在运行。 当我在Ubuntu机器上禁用iptables时,一切正常。 这导致我认为ubuntu机器上的iptables阻止了centos机器到达ubuntu机器上的rpc.statd。 任何想法是怎么回事? 编辑: 我将nfs服务器添加到/ etc / hosts文件。 portmap和rpc.statd已经安装。 我在iptables中打开了portmap的tcp和udp端口。 我的iptables规则如下: iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 111 […]

需要iptables附加规则的一些解释

以下是我添加到filter表中的一些规则,并列出了与每个filter相关的添加的输出: $iptables -A INPUT -i eth0 -j ACCEPT 输出是: target prot opt source destination ACCEPT all — 0.0.0.0/0 0.0.0.0/0 第二个命令: $iptables -A INPUT -i eth1 -j ACCEPT 而对于INPUT链的附加规则与第一条相同: target prot opt source destination ACCEPT all — 0.0.0.0/0 0.0.0.0/0 正如你所看到的,我将数据包的来源从eth0改为eth1 ,但是我没有看到它反映在附加规则中。 有人可以解释我在哪里做了区别,或者iptables知道第一条规则与eth0有关,第二条规则与eth1有关吗? 谢谢!

获取代理列表

它有一个来源,我可以得到一个大的最新的代理ips列表? 如果他们使用代理,我想限制用户在网站上的投票。

发送邮件时,iptables阻塞postfix

我的iptables导致后缀服务器不发送电子邮件。 有问题的mail.log行是: Mar 1 06:19:44 server postfix / smtp [/ b]:3D62CA06CA9:to =,relay = none,delay = 42,delay = 2.3 / 0.01 / 40/0,dsn = 4.4.3,status = deferred域名未find名称服务错误名称= gmail.comtypes= MX:主机未find,请重试) 我发现另一个人如何解决这个问题的解释 。 他提出: SERVER_IP="202.54.10.20" DNS_SERVER="202.54.1.5 202.54.1.6" for ip in $DNS_SERVER do iptables -A OUTPUT -p udp -s $SERVER_IP –sport 1024:65535 -d $ip –dport 53 -m state –state […]

iptables不想同时login和丢弃

我(仍)试图build立一个iptables防火墙,但这次,我试图logging丢弃的数据包。 这里是我如何做到这一点(这个代码插入到ACCEPT规则之后; $IPT代表iptables的绝对path,这里是/sbin/iptables ): $IPT -N LOGDROP $IPT -A LOGDROP -j LOG -m limit –limit 5/min -j LOG –log-level debug –log-prefix "iptables rejected: " $IPT -A LOGDROP -j DROP $IPT -A INPUT -s 0/0 -j LOGDROP $IPT -A OUTPUT -j LOGDROP $IPT -A FORWARD -j LOGDROP 当我尝试执行这个代码时,iptables拒绝它,并说: iptables v1.4.8: multiple -j flags not allowed Try […]

iptables作为网关和POP3 SMTP端口

当试图打开端口110和25在我的iptables为只有Outlook的用户,我不能这样做,除了通过转发这样的: -I FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT -I FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT 但是这样做可以让我局域网中的其他用户绕过我的鱿鱼代理。 这些转发命令适当的语法只是笔端口110和25是什么? 编辑: 这是我目前直接configuration的iptables文件。 它现在的作品,但肯定它远非完美。 目前没有显式代理服务器的用户无法连接到互联网。 outlook端口正在工作。 # Generated by iptables-save v1.3.5 on Fri Mar 9 13:59:24 2012 *nat :PREROUTING ACCEPT [25448:1902369] :POSTROUTING ACCEPT [29:1625] :OUTPUT ACCEPT [786:56571] -A POSTROUTING -o eth1 -j MASQUERADE COMMIT # Completed on […]

根据请求的(子)域redirect到端口(1个IP,非HTTP请求)

可能重复: 如何使用DNS将域名redirect到我的服务器上的特定端口 所以我一直在试图找出如何将一个子域redirect到一个特定的端口。 假设应用程序将始终请求默认端口,默认端口为30000.我们有sub1.domain.com,sub2.domain.com和sub3.domain.com,它们都指向相同的IP。 我想redirect请求到sub1.domain.com:30000到端口31000,sub2到32000和sub3到33000.所有这些在相同的IP。 我已经尝试了socat / netcat和iptables,但是它们都将域parsing为一个IP地址,在这种情况下,它是相同的,所以它打破了redirect。 有任何想法吗? 这甚至有可能吗? 我有一些networking知识和了解层有点…这里的问题是跨层,所以我不知道甚至有办法做到这一点,除非我写一个服务器,侦听该端口,并redirect基于请求的域…: \ 先谢谢你。 🙂