你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux用iptables实现网站访问重定向

[日期:2013-08-17] 来源:Linux社区  作者:galean [字体: ]

因为某些原因需要把访问10.0.3.49上的httpd服务重定向到10.0.3.26上.所以研究了一下用iptables的NAT实现IP与端口的重定向,其实很简单,只需要两步。

1、首先需要确保linux服务器10.0.3.49开启了数据转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward

2、10.0.3.49做NAT的ip和端口80的重定向。
iptables -t nat -A PREROUTING -p tcp --dport 80 -d 10.0.3.49 -j DNAT --to 10.0.3.26:80
iptables -t nat -A POSTROUTING -d 10.0.3.26 -p tcp --dport 80 -j SNAT --to 10.0.3.49:80
iptables -A FORWARD -d 10.0.3.26 -j ACCEPT 
如果还是没有成功,用tcpdump -nn -i any port 80 看两台服务器网卡上是否有数据进入和出去,将检查自己的iptables是否放行,我的iptables规则是这样设置的:
iptables -F
iptables -X
iptables -Z
iptables -P INPUT  DROP
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


iptables -A INPUT -p TCP  --dport  21  --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p TCP  --dport 65400:65410 --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p TCP  --dport  22  --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p TCP  --dport  25  --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p UDP  --dport  53  --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p TCP  --dport  53  --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p TCP  --dport  80  --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p TCP  --dport 110  --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p TCP  --dport 443  --sport 1024:65534 -j ACCEPT
/etc/init.d/iptables save

遇到的问题:
1.没有设置iptables -A FORWARD -d 10.0.3.26 -j ACCEPT
10.0.3.49上查看数据:
[root@vb01 ~]# tcpdump -nn -i any port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
20:20:27.704953 IP 10.0.3.27.54604 > 10.0.3.49.80: Flags [S], seq 3899582159, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:20:27.706000 IP 10.0.3.27.54605 > 10.0.3.49.80: Flags [S], seq 18175173, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:20:27.951043 IP 10.0.3.27.54607 > 10.0.3.49.80: Flags [S], seq 984209039, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:20:30.703240 IP 10.0.3.27.54604 > 10.0.3.49.80: Flags [S], seq 3899582159, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:20:30.710931 IP 10.0.3.27.54605 > 10.0.3.49.80: Flags [S], seq 18175173, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:20:30.949540 IP 10.0.3.27.54607 > 10.0.3.49.80: Flags [S], seq 984209039, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:20:36.698054 IP 10.0.3.27.54604 > 10.0.3.49.80: Flags [S], seq 3899582159, win 8192, options [mss 1460,nop,nop,sackOK], length 0
20:20:36.715184 IP 10.0.3.27.54605 > 10.0.3.49.80: Flags [S], seq 18175173, win 8192, options [mss 1460,nop,nop,sackOK], length 0
20:20:36.951390 IP 10.0.3.27.54607 > 10.0.3.49.80: Flags [S], seq 984209039, win 8192, options [mss 1460,nop,nop,sackOK], length 0
可以看到Flags全是S标志,表示TCP连接请求没有回应,所以本机iptables可能没有设置允许目的地址是10.0.3.26的数据的转发。

推荐阅读:

iptables—包过滤(网络层)防火墙 http://www.linuxidc.com/Linux/2013-08/88423.htm

Linux防火墙iptables详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htm

iptables+L7+Squid实现完善的软件防火墙 http://www.linuxidc.com/Linux/2013-05/84802.htm

iptables的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Linux下防火墙iptables用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款