platinum 请进,关于你写一段iptables代码的问题[1]

[入库:2005年9月19日] [更新:2007年3月24日]

本文简介:


帖子http://bbs.chinaunix.net/forum/viewtopic.php?t=503944&show_type=

[code:1:37441a3965]
#!/bin/sh 

echo 1 > /proc/sys/net/ipv4/ip_forward 

iptables -F -t filter 
iptables -F -t nat 
iptables -P INPUT DROP 
iptables -P OUTPUT ACCEPT 
iptables -P FORWARD ACCEPT 
iptables -t nat -P PREROUTING ACCEPT 
iptables -t nat -P POSTROUTING ACCEPT 
iptables -t nat -P OUTPUT ACCEPT 

# ALLOW ALL in PRIVATE NET 
iptables -A INPUT -i lo -j ACCEPT 
iptables -A INPUT -i eth1 -j ACCEPT 

# FORWARD 
iptables -A FORWARD -p tcp -d 内网WEB1 --dport 80 -j ACCEPT 
iptables -A FORWARD -p tcp -d 内网WEB2 --dport 80 -j ACCEPT 
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -s 内网WEB1 -j DROP 
iptables -A FORWARD -s 内网WEB1 -j DROP 

# PAT 
iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 80 -j DNAT --to 内网WEB服务器一IP
iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 8001 -j DNAT --to 内网WEB服务器二IP:;80 

# ssh 
iptables -A INPUT -s 192.168.0.2 -p tcp --dport 22 -j ACCEPT 

# DROP some URLs 
iptables -A FORWARD -d www.okbt.com -j DROP 
iptables -A FORWARD -d www.18girl.com -j DROP 
iptables -A FORWARD -d www.avvcd.com -j DROP 
iptables -A FORWARD -d www.kiss520.com -j DROP 
iptables -A FORWARD -d www.forbiddensex.nl -j DROP 
iptables -A FORWARD -d www.selang.net -j DROP 
iptables -A FORWARD -d oral-sex.blond-sex.us -j DROP 
iptables -A FORWARD -d group-sex-pics-group-sex-pictures.com -j DROP 
iptables -A FORWARD -d www.orchid-pussy.com -j DROP 

# NAT 
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE  
[/code:1:37441a3965]

想请教几个问题
如果我的内网是个MAIL服务器,它有个一发送25端口和接受110端口
那我发送25端口需要做端口映射吗?如果不需要,但我想要做这样的端口映射
命令是
iptables -t nat -A PREROUTING -d MAIL-IP -p tcp --dport  25 -j DNAT --to-d 公网IP:25
这个吗?

请问iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
这个命令是什么意思,为什么要这个命令

最后一个NAT转换
既然有静态IP地址
用这个命令可以把?
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-s 192.168.0.0/24

我觉得iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 80 -j DNAT --to 内网WEB服务器一IP:80 
这个命令漏了参数
应该iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 80 -j DNAT --to-d 内网WEB服务器一IP:80

 platinum 回复于:2005-03-03 12:10:03
[quote:2323c2173f]
想请教几个问题 
如果我的内网是个MAIL服务器,它有个一发送25端口和接受110端口 
那我发送25端口需要做端口映射吗?如果不需要,但我想要做这样的端口映射 
命令是 
iptables -t nat -A PREROUTING -d MAIL-IP -p tcp --dport 25 -j DNAT --to-d 公网IP:25 
这个吗?
[/quote:2323c2173f]
如果MAIL服务器在内网,而不对外提供POP3服务,可以只映射25端口
另外,同样端口的映射,可以不写内网IP的端口,比如
iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 25 -j DNAT --to LAN-MAIL

还有,你错了2个地方
1、你写反了,应该先WANIP,后LANIP
2、--to-d我不知道能不能用,全写应该是--to-destination,简写是--to LANIP

[quote:2323c2173f]
请问iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
这个命令是什么意思,为什么要这个命令
[/quote:2323c2173f]
这个是允许ESTABLISHED状态和RELATED状态的数据包通过,而对NEW状态的数据包就DROP了
这样做的目的是为了禁止新连接的数据包,而不切断已连接的TCP/IP数据

[quote:2323c2173f]
最后一个NAT转换 
既然有静态IP地址 
用这个命令可以把? 
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-s 192.168.0.0/24 
[/quote:2323c2173f]
MASQUERADE是SNAT的一个特例,允许自行选择出去IP,一般在双WAN的情况下用的比较多
我用MASQUERADE的目的是因为他写起来简单,单WAN也可以用
另外,你写的不对,SNAT后面应该跟一个WAN地址

[quote:2323c2173f]
我觉得
iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 80 -j DNAT --to 内网WEB服务器一IP:80 
这个命令漏了参数,应该
iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 80 -j DNAT --to-d 内网WEB服务器一IP:80
[/quote:2323c2173f]
我的没错,我的是简写

 海之蓝 回复于:2005-03-03 12:27:14
我的意思就是要对外提供POP3服务,
命令是怎么写呢?

“MASQUERADE是SNAT的一个特例,允许自行选择出去IP,一般在双WAN的情况下用的比较多 
我用MASQUERADE的目的是因为他写起来简单,单WAN也可以用 
另外,你写的不对,SNAT后面应该跟一个WAN地址”

SNAT后面应该跟的是LAN地址把,我看的是Iptables 指南 1.1.19介绍的
原文
Option --to-source
Example iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000 
Explanation 指定源地址和端口,有以下几种方式: 
1、单独的地址。
2、一段连续的地址,用连字符分隔,如194.236.50.155-194.236.50.160,这样可以实现负载平衡。每个流会被随机分配一个IP,但对于同一个流使用的是同一个IP。3、在指定-p tcp 或 -p udp的前提下,可以指定源端口的范围,如194.236.50.155:1024-32000,这样包的源端口就被限制在1024-32000了。注意,如果可能,iptables总是想避免任何的端口变更,换句话说,它总是尽力使用建立连接时所用的端口。但是如果两台机子使用相同的源端口,iptables 将会把他们的其中之一映射到另外的一个端口。如果没有指定端口范围, 所有的在512以内的源端口会被映射到512以内的另一个端口,512和1023之间的将会被映射到 1024内,其他的将会被映射到大于或对于1024的端口,也就是说是同范围映射。还要注意,这种映射和目的端口无关。因此,如果客户想和防火墙外的HTTP服务器联系,它是不会被映射到FTP control所用的端口的。

 海之蓝 回复于:2005-03-03 12:37:04
再问:
如果我不加
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
会出现什么错误啊,对网络有什么影响?

您说:“这样做的目的是为了禁止新连接的数据包,而不切断已连接的TCP/IP数据 ”

如果已连接的数据已经结束,那么它有产生新数据连接,那就没有办法连接了啊
如FTP下载,要向你这样说就没有办法在产生的新的会话,也就是连接了。

当一个端口处在LISTEN状态,那么这个连接会产生吗?

 platinum 回复于:2005-03-03 13:09:56
[quote:f9d8841c78]
Example iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000 
[/quote:f9d8841c78]
这是一个源地址映射的例子,194.236.50.155-194.236.50.160实际是你的一个公网IP地址池

[quote:f9d8841c78]
再问: 
如果我不加 
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
会出现什么错误啊,对网络有什么影响? 
[/quote:f9d8841c78]
那样的话,根据我那个脚本的逻辑,服务器就不能响应外网访问的WEB服务了

[quote:f9d8841c78]
您说:“这样做的目的是为了禁止新连接的数据包,而不切断已连接的TCP/IP数据 ” 

如果已连接的数据已经结束,那么它有产生新数据连接,那就没有办法连接了啊
[/quote:f9d8841c78]
对,没错

[quote:f9d8841c78]
如FTP下载,要向你这样说就没有办法在产生的新的会话,也就是连接了。 
[/quote:f9d8841c78]
FTP比较特殊,除了TCP/21以外,还用了其他端口进行数据传输
这个你需要去看有关主动模式和被动模式FTP的资料了,内容很多,我就不细说了
Linux针对FTP的被动模式传输(过程中需要临时开端口来相应外部的连接)有个单独的模块ip_conntrack_ftp,他负责处理这种问题

 海之蓝 回复于:2005-03-03 13:43:09
如果开启POP3服务,,命令是不是这样吗?
iptables -t nat -A PREROUTING -d 公网IP:25 -p tcp --dport 25 -j DNAT --to LAN-MAIL 

我对这个例子理解不清楚
Example iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000 
这个例子中没有写内网的IP地址段,SNAT是默认找到内网IP地址段,然后在转换源地址,不需要自己在命令中手动添加-s 192.168.0.0/24吗?

如你所说,iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
是允许服务器响应外网访问的WEB服务,但是如果WLAN-IP访问结束关掉
IE,然后又打开IE访问WEB,那你说怎么和这个WEB建立连接呢?

你回复同意“如果已连接的数据已经结束,那么它有产生新数据连接,那就没有办法连接了啊 ”这个说话,那就没有办法访问WEB服务。
我感觉有点糊涂,你能在说明白点

谢谢了

 platinum 回复于:2005-03-03 14:09:41
[quote:cdd629466b]
如果开启POP3服务,,命令是不是这样吗? 
iptables -t nat -A PREROUTING -d 公网IP:25 -p tcp --dport 25 -j DNAT --to LAN-MAIL 
[/quote:cdd629466b]
不对
POP3的端口是110,而且你的-d参数后面只能有地址,不能有端口
应该写成
iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 110 -j DNAT --to LAN-MAIL

[quote:cdd629466b]
我对这个例子理解不清楚 

本文关键:platinum 请进,关于你写一段iptables代码的问题
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top