帖子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代码的问题
相关方案
|