免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: lnx
打印 上一主题 下一主题

[网络管理] iptables端口转发后不能收邮件 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2004-06-15 11:46 |只看该作者

iptables端口转发后不能收邮件

转发不是FORWARD,要用POSTROUTING和PREROUTING
这样试试

1、清除所有规则
iptables -F
iptables -F -t nat

2、设置默认为ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P PREROUTING ACCEPT

3、向内转发25和110端口
iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 25 -j DNAT --to 内网MAILSERVER地址
iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 110 -j DNAT --to 内网MAILSERVER地址

4、允许数据包有来有回
echo 1 >; /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE

注意,以上东西不要凭自己的理解修改,因为你的修改可能会导致数据包转发错误,尤其是MASQUERADE那行!

论坛徽章:
0
22 [报告]
发表于 2004-06-15 14:29 |只看该作者

iptables端口转发后不能收邮件

原帖由 "platinum" 发表:
转发不是FORWARD,要用POSTROUTING和PREROUTING
这样试试
..........

感谢白金、q1280c和大家的帮忙,现在终于可以了。在开始时q1208c有提出过的,但我当然时理解错了

另外,按你上面的可以正常收到数据包,但不能发送出去,所以还得加上这一条:

  1. iptables -t nat -A POSTROUTING -d 192.168.0.3 -p tcp --dport 80 -j SNAT --to 192.168.0.2
复制代码
才能够正常发出去。下面我整理一下,希望大家以后用得着时参考下整个代码如下:(mailsrv=>;192.168.0.3  fw=>;eth0=192.168.0.2  eth1=211.162.xxx.xxx)

  1. #!/bin/bash

  2. #load modules
  3. /sbin/modprobe iptable_filter
  4. /sbin/modprobe iptable_nat
  5. /sbin/modprobe ip_conntrack
  6. /sbin/modprobe ip_conntrack_ftp
  7. /sbin/modprobe ip_nat_ftp

  8. # Reset Default Policies
  9. /sbin/iptables -P INPUT ACCEPT
  10. /sbin/iptables -P FORWARD ACCEPT
  11. /sbin/iptables -P OUTPUT ACCEPT
  12. /sbin/iptables -t nat -P PREROUTING ACCEPT
  13. /sbin/iptables -t nat -P POSTROUTING ACCEPT
  14. /sbin/iptables -t nat -P OUTPUT ACCEPT
  15. /sbin/iptables -t mangle -P PREROUTING ACCEPT
  16. /sbin/iptables -t mangle -P OUTPUT ACCEPT

  17. # Flush all rules
  18. /sbin/iptables -F
  19. /sbin/iptables -t nat -F
  20. /sbin/iptables -t mangle -F

  21. # Erase all non-default chains
  22. /sbin/iptables -X
  23. /sbin/iptables -t nat -X
  24. /sbin/iptables -t mangle -X


  25. echo 1 >; /proc/sys/net/ipv4/ip_forward

  26. /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -o eth1 -j SNAT --to 211.162.xxx.xxx(这条不是必须的,看你需要与否)

  27. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 80 -j DNAT --to 192.168.0.3

  28. /sbin/iptables -t nat -A POSTROUTING -d 192.168.0.3 -p tcp --dport 80 -j SNAT --to 192.168.0.2 (这条不加的话对方不能收到你发出去的邮件)

  29. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 25 -j DNAT --to 192.168.0.3
  30. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 110 -j DNAT --to 192.168.0.3

  31. /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE(这条不加的话,你不能正常接收邮件)
复制代码

论坛徽章:
0
23 [报告]
发表于 2004-06-15 14:34 |只看该作者

iptables端口转发后不能收邮件

sbin/iptables -t nat -A POSTROUTING -d 192.168.0.3 -p tcp --dport 80 -j SNAT --to 192.168.0.2
这行你加的很奇怪,我没明白其中的含义

另外,有了MASQUERADE那行
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -o eth1 -j SNAT --to 211.162.xxx.xxx
应该可以省略了

论坛徽章:
0
24 [报告]
发表于 2004-06-15 14:43 |只看该作者

iptables端口转发后不能收邮件

代码:

iptables -t nat -A POSTROUTING -d 192.168.0.3 -p tcp --dport 80 -j SNAT --to 192.168.0.2

我觉得这句应该不是必须的.(如果你的服务器的缺省网关是指向linux网关的话)如果你的mailserver的缺省网关是其他机器才需要这句.

论坛徽章:
0
25 [报告]
发表于 2004-06-15 15:00 |只看该作者

iptables端口转发后不能收邮件

的确,楼主的规则里有几条是没用的

论坛徽章:
0
26 [报告]
发表于 2004-06-15 15:00 |只看该作者

iptables端口转发后不能收邮件

原帖由 "lyking" 发表:
代码:

iptables -t nat -A POSTROUTING -d 192.168.0.3 -p tcp --dport 80 -j SNAT --to 192.168.0.2

我觉得这句应该不是必须的.(如果你的服务器的缺省网关是指向linux网关的话)如果你的mailserver的缺省网?.........

哦,还这样的啊    
谢谢!
TO 白金
  1. /sbin/iptables -t nat -A POSTROUTING -d 192.168.0.3 -p tcp --dport 80 -j SNAT --to 192.168.0.2
复制代码

这句我理解的是(不知是否对哦):让FW作为源地址转换SNAT,这样可以让回应的数据包能正确返回到mailsrv(192.168.0.3)

  1. 另外,有了MASQUERADE那行
  2. /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -o eth1 -j SNAT --to 211.162.xxx.xxx
  3. 应该可以省略了
复制代码

但是我觉得使用snat会好些,因为使用MASQUERADE时,当你interface失效或瞬间失效时,所有的连接都被丢弃了(我的是MAILSRV啊);而使用SNAT时,它则会保持不变

论坛徽章:
0
27 [报告]
发表于 2004-06-15 15:21 |只看该作者

iptables端口转发后不能收邮件

我根据脚本,和对你的网络拓扑的想象,改了一下FIREWALL脚本,你试试这个可以不


  1. #!/bin/bash

  2. #load modules
  3. /sbin/modprobe iptable_filter
  4. /sbin/modprobe iptable_nat
  5. /sbin/modprobe ip_conntrack
  6. /sbin/modprobe ip_conntrack_ftp
  7. /sbin/modprobe ip_nat_ftp

  8. # Reset Default Policies
  9. /sbin/iptables -P INPUT ACCEPT
  10. /sbin/iptables -P FORWARD ACCEPT
  11. /sbin/iptables -P OUTPUT ACCEPT
  12. /sbin/iptables -t nat -P PREROUTING ACCEPT
  13. /sbin/iptables -t nat -P POSTROUTING ACCEPT
  14. /sbin/iptables -t nat -P OUTPUT ACCEPT
  15. /sbin/iptables -t mangle -P PREROUTING ACCEPT
  16. /sbin/iptables -t mangle -P OUTPUT ACCEPT

  17. # Flush all rules
  18. /sbin/iptables -F
  19. /sbin/iptables -t nat -F
  20. /sbin/iptables -t mangle -F

  21. # Erase all non-default chains
  22. /sbin/iptables -X
  23. /sbin/iptables -t nat -X
  24. /sbin/iptables -t mangle -X


  25. echo 1 >; /proc/sys/net/ipv4/ip_forward

  26. /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE

  27. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 80 -j DNAT --to 192.168.0.3

  28. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 25 -j DNAT --to 192.168.0.3

  29. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 110 -j DNAT --to 192.168.0.3
复制代码

论坛徽章:
0
28 [报告]
发表于 2004-06-15 15:37 |只看该作者

iptables端口转发后不能收邮件

[quote]原帖由 "platinum"][/quote 发表:

HOHO,恭喜白金,通过。。。

另外,想问下我理解的这句有没有错呢?还是怎么样的?

  1. 但是我觉得使用snat会好些,因为使用MASQUERADE时,当你interface失效或瞬间失效时,所有的连接都被丢弃了(我的是MAILSRV啊);而使用SNAT时,它则会保持不变
复制代码

论坛徽章:
0
29 [报告]
发表于 2004-06-15 15:40 |只看该作者

iptables端口转发后不能收邮件

再换成这个试试,如果成,就解决了我多年来的一个心病!


  1. #!/bin/bash

  2. #load modules
  3. /sbin/modprobe iptable_filter
  4. /sbin/modprobe iptable_nat
  5. /sbin/modprobe ip_conntrack
  6. /sbin/modprobe ip_conntrack_ftp
  7. /sbin/modprobe ip_nat_ftp

  8. # Reset Default Policies
  9. /sbin/iptables -P INPUT ACCEPT
  10. /sbin/iptables -P FORWARD ACCEPT
  11. /sbin/iptables -P OUTPUT ACCEPT
  12. /sbin/iptables -t nat -P PREROUTING ACCEPT
  13. /sbin/iptables -t nat -P POSTROUTING ACCEPT
  14. /sbin/iptables -t nat -P OUTPUT ACCEPT
  15. /sbin/iptables -t mangle -P PREROUTING ACCEPT
  16. /sbin/iptables -t mangle -P OUTPUT ACCEPT

  17. # Flush all rules
  18. /sbin/iptables -F
  19. /sbin/iptables -t nat -F
  20. /sbin/iptables -t mangle -F

  21. # Erase all non-default chains
  22. /sbin/iptables -X
  23. /sbin/iptables -t nat -X
  24. /sbin/iptables -t mangle -X


  25. echo 1 >; /proc/sys/net/ipv4/ip_forward

  26. /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -i ethx -j MASQUERADE (ethx是你内网的网卡)

  27. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 80 -j DNAT --to 192.168.0.3

  28. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 25 -j DNAT --to 192.168.0.3

  29. /sbin/iptables -t nat -A PREROUTING -d 211.162.xxx.xxx -p tcp --dport 110 -j DNAT --to 192.168.0.3
复制代码

论坛徽章:
0
30 [报告]
发表于 2004-06-15 15:54 |只看该作者

iptables端口转发后不能收邮件

两个配置的差别是这句
  1. /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
  2. /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -i ethx -j MASQUERADE (ethx是你内网的网卡)
复制代码

白金,你多年的心病是什么问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP