免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2124 | 回复: 9
打印 上一主题 下一主题

请问哪位有adsl动态IP利用linux做dnat影射内网ftp服务器的案例? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-17 11:27 |只看该作者 |倒序浏览
公司已有一linux服务器,提供网关、mail、代理等服务,现想在内网做一ftp服务器,利用网关nat端口。
服务器用adsl动态IP,出口ppp0,内网eth0(192.168.1.0/24),内网FTP服务器地址为192.168.1.8:21,网关ip为192.168.1.254,iptables脚本如下(摘要):

#!/bin/bash
#
# The interface that connect Internet
  EXTIF="ppp0"
  INIF="eth0"
  INNET="192.168.1.0/24"
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  export PATH EXTIF INIF INNET


  /sbin/iptables -F
  /sbin/iptables -X
  /sbin/iptables -Z
  /sbin/iptables -F -t nat
  /sbin/iptables -X -t nat
  /sbin/iptables -Z -t nat
  /sbin/iptables -P INPUT   DROP
  /sbin/iptables -P OUTPUT  ACCEPT
  /sbin/iptables -P FORWARD DROP
  /sbin/iptables -t nat -P PREROUTING  ACCEPT
  /sbin/iptables -t nat -P POSTROUTING ACCEPT
  /sbin/iptables -t nat -P OUTPUT      ACCEPT

/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport  21 -j ACCEPT
  /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  /sbin/iptables -A INPUT -p tcp -m multiport --dports 1863,443,110,80,25 -j ACCEPT

  /sbin/iptables -A FORWARD -p tcp -s $INNET -m multiport --dports 21,25,110,443,1863 -j ACCEPT
  /sbin/iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


  /sbin/iptables -A INPUT -i $INIF -j ACCEPT
        echo "1">/proc/sys/net/ipv4/ip_forward
        echo "1">/proc/sys/net/ipv4/icmp_echo_ignore_all
        echo "1">/proc/sys/net/ipv4/conf/eth0/proxy_arp
        echo "8184000">/proc/sys/net/ipv4/ip_conntrack_max
        echo "1024">/proc/sys/net/ipv4/neigh/default/gc_thresh1
        echo "2048">/proc/sys/net/ipv4/neigh/default/gc_thresh2
        echo "4096">/proc/sys/net/ipv4/neigh/default/gc_thresh3
        /sbin/iptables -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE
        /sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 21 -j DNAT --to 192.168.1.8:21
        /sbin/iptables -t nat -A POSTROUTING -d 192.168.1.8 -p tcp --dport 21 -j SNAT --to 192.168.1.254

结果不成功,将

  1. /sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 21 -j DNAT --to 192.168.1.8:21
复制代码

换成

  1. /sbin/iptables -t nat -A PREROUTING -d 0.0.0.0/0.0.0.0 -p tcp --dport 21 -j DNAT --to 192.168.1.8:21
复制代码


  1. /sbin/iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 21 -j DNAT --to 192.168.1.8:21
复制代码

内网可以用动态域名或公网IP访问,外网不行。

请问大家有类似的成功案例吗?

[ 本帖最后由 thatday 于 2005-11-17 11:33 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-11-18 13:52 |只看该作者
#         端口转发:
#        ^^^^^^^^^
# 将访问本机的 Web 服务(80 端口)重定向到 192.168.0.9 的 80 端口 :
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#[0:0] -A PREROUTING -i ppp0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.9:80
#[0:0] -A PREROUTING -i eth0 -p tcp -m tcp -d 192.168.0.254 --dport 80 -j DNAT --to-destination 192.168.0.9:80
# 下面这句专门针对对于局域网里面的端口转发(在内部没有 DNS 服务器时):
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#[0:0] -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.9 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.254



看看。

论坛徽章:
0
3 [报告]
发表于 2005-11-19 10:25 |只看该作者
好像还是不行。。

论坛徽章:
0
4 [报告]
发表于 2005-11-19 10:38 |只看该作者
我给你改了一下,用这个试试

  1. #!/bin/bash
  2. #
  3. # The interface that connect Internet
  4. EXTIF="ppp0"
  5. INIF="eth0"
  6. INNET="192.168.1.0/24"
  7. modprobe ip_nat_ftp
  8. modprobe ip_conntrack_ftp

  9. iptables -F
  10. iptables -X
  11. iptables -F -t nat
  12. iptables -X -t nat
  13. iptables -P INPUT   DROP
  14. iptables -P OUTPUT  ACCEPT
  15. iptables -P FORWARD DROP
  16. iptables -t nat -P PREROUTING  ACCEPT
  17. iptables -t nat -P POSTROUTING ACCEPT
  18. iptables -t nat -P OUTPUT      ACCEPT

  19. iptables -A FORWARD -p udp --dport 53 -j ACCEPT
  20. iptables -A FORWARD -p tcp -m multiport --dports 21,25,80,110,443,1863 -j ACCEPT
  21. iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

  22. iptables -A INPUT -i $INIF -j ACCEPT
  23. echo "1">/proc/sys/net/ipv4/ip_forward
  24. echo "1">/proc/sys/net/ipv4/icmp_echo_ignore_all
  25. echo "1">/proc/sys/net/ipv4/conf/eth0/proxy_arp
  26. echo "8184000">/proc/sys/net/ipv4/ip_conntrack_max
  27. echo "1024">/proc/sys/net/ipv4/neigh/default/gc_thresh1
  28. echo "2048">/proc/sys/net/ipv4/neigh/default/gc_thresh2
  29. echo "4096">/proc/sys/net/ipv4/neigh/default/gc_thresh3
  30. iptables -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE
  31. iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 21 -j DNAT --to 192.168.1.8
复制代码

另外

  1. echo "1">/proc/sys/net/ipv4/ip_forward
  2. echo "1">/proc/sys/net/ipv4/icmp_echo_ignore_all
  3. echo "1">/proc/sys/net/ipv4/conf/eth0/proxy_arp
  4. echo "8184000">/proc/sys/net/ipv4/ip_conntrack_max
  5. echo "1024">/proc/sys/net/ipv4/neigh/default/gc_thresh1
  6. echo "2048">/proc/sys/net/ipv4/neigh/default/gc_thresh2
  7. echo "4096">/proc/sys/net/ipv4/neigh/default/gc_thresh3
复制代码

这部分有些内容我不清楚为什么这么设,不妨说一下各句的含义

论坛徽章:
0
5 [报告]
发表于 2005-11-19 11:21 |只看该作者
原帖由 platinum 于 2005-11-19 10:38 发表
我给你改了一下,用这个试试
[code]
#!/bin/bash
#
# The interface that connect Internet
EXTIF="ppp0"
INIF="eth0"
INNET="192.168.1.0/24"
modprobe ip_nat_ftp
modp ...


platinum,我的做法是根据
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1
这篇帖子来的。

主要原因是前段时间,公司内部有很多机器中了冲击波,振荡波等病毒,可能还有一些其他原因,比如BT类P2P软件,造成服务器ARP溢出
NET: 291 messages suppressed.
Neighbour table overflow.

所以,禁掉了ICMP
echo "1">/proc/sys/net/ipv4/icmp_echo_ignore_all
顺便加大了arp数目
echo "1">/proc/sys/net/ipv4/conf/eth0/proxy_arp
echo "8184000">/proc/sys/net/ipv4/ip_conntrack_max
echo "1024">/proc/sys/net/ipv4/neigh/default/gc_thresh1
echo "2048">/proc/sys/net/ipv4/neigh/default/gc_thresh2
echo "4096">/proc/sys/net/ipv4/neigh/default/gc_thresh3

论坛徽章:
0
6 [报告]
发表于 2005-11-19 11:47 |只看该作者
echo "1">/proc/sys/net/ipv4/conf/eth0/proxy_arp
打开这个做什么?做 arp 代理?

echo "8184000">/proc/sys/net/ipv4/ip_conntrack_max
这个不是增加 arp 数目,是增加系统的并发数

echo "1024">/proc/sys/net/ipv4/neigh/default/gc_thresh1
echo "2048">/proc/sys/net/ipv4/neigh/default/gc_thresh2
echo "4096">/proc/sys/net/ipv4/neigh/default/gc_thresh3
这三个我就不清楚了

论坛徽章:
0
7 [报告]
发表于 2005-11-19 11:59 |只看该作者
原帖由 platinum 于 2005-11-19 11:47 发表
echo "1">/proc/sys/net/ipv4/conf/eth0/proxy_arp
打开这个做什么?做 arp 代理?

echo "8184000">/proc/sys/net/ipv4/ip_conntrack_max
这个不是增加 arp 数目,是增加系统的并 ...


这个我也是依据那篇帖子,当时因为一直掉线,就加了这几句,果然有效。呵呵。
学习中……

论坛徽章:
0
8 [报告]
发表于 2005-11-19 12:02 |只看该作者
问题解决了没?
你的 script 有几点误区,注意到了没有?
对比一下你我的规则看一下

论坛徽章:
0
9 [报告]
发表于 2005-11-19 16:03 |只看该作者
可能我的脚本有错,我再检查一下:)

论坛徽章:
0
10 [报告]
发表于 2005-12-07 10:33 |只看该作者
已成功,用域名做目的地址也可以,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP