LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 718|回复: 5

这个地址转换怎么做?

[复制链接]
发表于 2004-12-13 11:01:02 | 显示全部楼层 |阅读模式
环境:
    Red Hat Linux 9.0 + 动态IP的ADSL, eth0接ADSL,eth1接局域网,IP 192.168.0.1,其他机子通过这台机子上网
    申请了一个 test.8800.org 的动态域名,用iptables做了地址转换,代码如下:
    iptables -t nat -A PREROUTING -i ppp0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
    也就是说,当外面的机子访问http://test.8800.org 的时候,实际上是访问我局域网中的另外一台web服务器
    以上都已经成功实现

问题:
    当我在 192.168.0.3 这台机子上访问http://test.8800.org 时,却不能访问到192.168.0.2的页面,打开的是192.168.0.1上的页面,也就是说上面的那条iptables 没有起作用,也许是因为不是通过ppp0来访问的原因。
   iptables要怎么写,才可以使不管是在内网还是在外网访问
http://test.8800.org 都是指向192.168.0.2呢?
发表于 2004-12-13 12:45:18 | 显示全部楼层
iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
iptables -t nat -A POSTROUTING -d 192.168.0.2 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.1
 楼主| 发表于 2004-12-13 14:57:26 | 显示全部楼层
谢谢!~~~~

按yiwander的方法添加了后面的一行代码,可是还是不可以,是不是不可以用iptables来实现呢?
发表于 2004-12-13 16:51:59 | 显示全部楼层
iptables -t nat -A POSTROUTING -s 192.168.0.2 --sport 80 -j MASQUERADE

把返回包的源地址改便,否则.3的机器会把返回包丢掉
发表于 2004-12-13 18:28:56 | 显示全部楼层
iptables -t nat -A PREROUTING -p tcp -d test.8800.org --dport www -s 192.168.0.0/24 -j DNAT --to 192.168.0.2
 楼主| 发表于 2004-12-13 19:06:11 | 显示全部楼层
谢谢各位,还是不可以

iptables -t nat -A POSTROUTING -d 192.168.0.2 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.1
iptables -t nat -A POSTROUTING -s 192.168.0.2 --sport 80 -j MASQUERADE
感觉上这两句好象是多余的,以前我只用
iptables -t nat -A PREROUTING -i ppp0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
在外网访问test.8800.org 的时候,觉得一切正常,可以正常浏览,可以下载文件,可以在论坛里发表文章
现在加上这两句的时候,没有觉得有什么特别的变化,好象没是多余的,不知道为什么会这样呢?确实是多余的吗?

iptables -t nat -A PREROUTING -p tcp -d test.8800.org --dport www -s 192.168.0.0/24 -j DNAT --to 192.168.0.2
加上这句以后,192.168.0.3就访问不到test.8800.org了,显示无法打开网页

看来我只有在内部的DNS上把test.8800.org 解析为192.168.0.2 了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表