Chinaunix首页 | 论坛 | 博客
  • 博客访问: 684978
  • 博文数量: 209
  • 博客积分: 26
  • 博客等级: 民兵
  • 技术积分: 326
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 09:29
文章分类

全部博文(209)

文章存档

2015年(6)

2014年(40)

2013年(154)

2012年(11)

我的朋友

分类: LINUX

2013-04-19 14:14:10

公司有一个路由器R(linux 的操作系统),内网ip为192.168.1.1
内网一http服务器ip为192.168.1.244
内网一clien的ip为192.168.1.123
想要将内网client访问R的8080端口的请求映射到http服务器的80端口上,如何实现?

  1. 首先,设置映射规则。
    1. iptables -t nat -A PREROUTING -d 192.168.1.1/32 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.244:80

  2. 其次因为在同一网段内,http服务器将不通过路由器R,直接将包返回给client,而client发现此包的源地址(http服务器的ip)与自己所请求的地址(R的ip)不同,则会将其drop,所以我们要做一个SNAT,将之前转发的包的源地址改写为路由器R的ip。
    1. iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.244 --dport 80 -j SNAT --to-source 192.168.1.1

  3. 最后,非常重要的一点,打开路由器R的forward功能
    1. echo 1 >/proc/sys/net/ipv4/ip_forward

至此,该功能已经得以实现。

若希望如果在R上访问本机的8080端口,同样可以映射至http服务器的80端口,则还需要加上一条规则。
  1. iptables -t nat -A OUTPUT -d 192.168.1.1 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.244:80

阅读(2701) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~