求救.关于ip映射(NAT)

由 linuxsky 在 08-20-2002 10:15 发表:

求救.关于ip映射(NAT)

我用一台服务器(redhat 7.3 双网卡 一内网ip 一外网ip)

做了squid 来代理下面的客户端

然后我用iptables来做了透明网关代理,这样可以满足某些客户端可以用qq等sock5等。和outlook

我的squid是用的80的端口来代理

这是我开nat用的四句命令.

modprobe ip_tables

modprobe ip_nat_ftp

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

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

现在我想用这台服务器来做IP映射功能

于是我在对外的那块网卡上用下面命令加了一个ip上去

ifconfig eth1 add 61.x.x.12 netmask 255.255.x.x

于是我的服务器的对外网卡上就多了一个真实ip了

然后我用下面的命令来做ip映射

iptables -t nat -A PREROUTING -i eth1 -d 61.x.x.12 -j DNAT --to 172.16.128.x

这句的意思应该是发到61的数据包全部转到172内网的某个ip上来吧

可现在就是无法转。真是怪.

谁告诉一下还需要做什么?

谢谢!


由 solaris 在 08-20-2002 11:22 发表:


你想做什么nat,是inside的还是outside的?

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

这句话好像是做insideNAT

iptables -t nat -A PREROUTING -i eth1 -d 61.x.x.12 -j DNAT --to 172.16.128.x

这句话好像是做outsideNAT?


由 linuxsky 在 08-20-2002 12:21 发表:


要做的是外网访内网

等于我现在是实现了内网访外网了

但在实现外网访内网时就不行了


由 kevin 在 08-20-2002 13:42 发表:

这样可以吗

如果内网全是保留地址,internet怎么访问呀,不可能的。


由 linuxsky 在 08-20-2002 16:23 发表:


呵呵

是可以的啦

我以前用win2000实现过的

Linux下也实现过

我现在试试换个端口看看算了


由 linuxsky 在 08-20-2002 17:16 发表:


不知道是不是因为squid用了80的端口来做代理的问题???

但是我换了端口也不行.怪


由 linuxsky 在 08-29-2002 20:03 发表:


对啊对啊。我这个问题还没解决

http://www.linuxsir.com/bbs/showthr...p;threadid=5722


由 linuxsky 在 08-30-2002 03:08 发表:


一直等到临晨..还没人答复啊


由 北南南北 在 08-30-2002 03:27 发表:


sky兄弟,因为弟兄们大多数是没有实践环境。而不是不答复,可以理解。


===========================

请弟兄们发帖时要写个好标题,多谢!

===========================

每天以1000KM/H的速度在跑,感觉还是时间不够:(

“西学东渐,洋为中用” + 创造 = ?

linux ppc


由 linuxsky 在 08-30-2002 08:19 发表:


做这个应该不需要什么环境啊

只要能有上外网的机会

再有内网的机器。

呵呵。。

自己太心急了。

我以前做成功过。是按我上面的说法做的。但现在无论怎么做都不行。不知道怎么回事


由 xchen 在 08-30-2002 08:38 发表:

不知行否,可试一下

接收数据的时候你做了dnat,但是发出数据的时候你要做snat,你要将所有来自172.16.128.x的数据伪装成由61.x.x.12从eth1发出去。

iptables -t nat -A PREROUTING -o eth1 -s 172.16.128.x -j SNAT --to 61.x.x.12

dnat和snat应是一一对应,有进必有出嘛。

理论如此,还没时间试。


由 linuxsky 在 08-30-2002 09:15 发表:


-o是应该加在POSTROUTING规则里才行。不然出错啊..

这是我昨天的做法

我装的是Redhat7.3

装完后有iptables服务器

我执行如下命令

modprobe ip_tables

modprobe ip_nat_ftp

modprobe iptable_nat

modprobe ip_conntrack

modprobe ip_conntrack_ftp

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

ptables -t nat -A POSTROUTING -o eth0 -s 172.16.128.0/22 -j MASQUERADE

这样下面的机器只要设置好网关就可以上网了.

这说明我的iptables是工作正常的

然后我开始IP地址映射

iptables -t nat -A PREROUTING -i eth0 -d 61.1.1.1 -j DNAT --to 172.16.128.10

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.128.10 -j SNAT --to 61.1.1.1

这两句应该是把外网转内网进行DNAT转换

然后内网出去需要做源SNAT转换

这样的话应该都可以了嘛?可为什么我实现不了?

我叫外面的人试也不行。内网看也不行。但光输入172.16.128.10我是可以看到我内网的东西的。这说明我的apache也是正常的

我做IP地址转换的这台主机我什么服务都没开

我用netstat -anlt查看

是这样的结果

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 156 172.16.128.4:22 172.16.128.33:1277 ESTABLISHED

[root@dns1 root]#

说明我只开了个ssh服务啊

[root@dns1 root]# ps -aux | grep iptables

root 992 0.0 0.0 1760 596 pts/0 S 17:25 0:00 grep iptables

[root@dns1 root]#

这说明我的iptabl

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus