您好,匿名用户
随意问技术百科期待您的加入

linux如何将公网IP映射到局域网IP?

+1 投票

背景: 机房做了某些安全设置,不允许同一路由器上的机器互相访问,于是公司的多台服务器之间采用公网IP就无法访问,但是为了让多台服务器之间能交换数据,于是用每台机器的第二块网卡搭建了一个局域网,可以使用局域网IP互相访问。这导致很多配置很麻烦。

问题: 能不能通过某些设置,使访问 23.234.22.11 这样的公网IP的时候映射到 192.168.0.11这样的内网IP,避免很多复杂的设置

现在我在每台机器的 /etc/hosts里面给每台机器起了别名,不过在开发中,有些驱动是只支持填写IP的,会有些问题。

其实意思就是@依云 说的那样:当访问一个 IP 时实际上访问到另一个 IP

用户头像 提问 2013年 9月8日 @ Xerath 上等兵 (312 威望)
分享到:

1个回答

+1 投票
 
最佳答案

单纯的IP映射我不知道如何做,这里有两个思路:

一:把有公网ip的机器做为路由器使用,直接访问内网ip

如果23.234.22.11公网IP的这一台服务器能够访问到192.168.0.x内网,这台服务器应该有一个接口IP如192.168.0.1,可以将内网机器的网关都设置成192.168.0.1,然后在客户端机器增加静态路由

route add -net 192.168.0.0/24 gw 23.234.22.11

理论上应该可以互访问了。这时23.234.22.11这台服务器其实充当的是软件路由器的角色。注意要设置允许IP转发,方法如下:

echo "1" > /proc/sys/net/ipv4/ip_forward

或者编辑/etc/sysctl.conf修改内容

net.ipv4.ip_forward = 1

然后执行

sysctl -p

生效(重启依然有效)。

二:做端口映射,将某个服务重定向到内网

比如使用iptables做端口映射, 比如访问23.234.22.11的80端口重定向到内网的192.168.0.11的80端口,以下代码仅供演示思路,不保证可用

iptables -t nat -A PREROUTING -d 23.234.22.11 -p tcp --dport 80 -j DNAT --to 192.168.0.11:80
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 23.234.22.11

这么做相对要安全些,仅开放了指定的服务(如http,ftp,nfs,smb等)。这时也不用在客户机上设置静态路由了。

用户头像 回复 2013年 9月8日 @ Kennen 上等兵 (442 威望)
选中 2013年 9月7日 @Xerath
提一个问题:

相关问题

0 投票
1 回复 39 阅读
用户头像 提问 2012年 12月1日 @ Cassiopeia 上等兵 (317 威望)
0 投票
1 回复 35 阅读
用户头像 提问 2012年 12月1日 @ Jayce 上等兵 (271 威望)
0 投票
1 回复 10 阅读
用户头像 提问 2014年 3月30日 @ Amumu 上等兵 (340 威望)
0 投票
1 回复 43 阅读
用户头像 提问 2013年 9月10日 @ Cancer 上等兵 (211 威望)
0 投票
1 回复 42 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...