Chinaunix

标题: 用ipnat对外网动态IP地址重定向到内网的简单解决方法。 [打印本页]

作者: slgx    时间: 2003-07-16 23:22
标题: 用ipnat对外网动态IP地址重定向到内网的简单解决方法。
(用了两天的时间来解决这个问题很有收获,下面是我的解决过程。by:slgx)
大家知道用ipnat把外网动态的ip地址重定向到内网的服务器上是很麻烦的一件事。
简单的说就是在/etc/ipnat.rules文件中:
map tun0 192.168.1.1/32 ->; 0/32 是可以的,但是
rdr tun0 0/32 port 80 ->; 192.168.1.1/32 port 80 tcp 却不可行。
虽然ipnat能够接受上面的格式,但实际上是不会执行重定向的。
ipnat并不会把0/32套用成外部地址a.b.c.d/32的样式。
我第一想到的是:用PPP自带的重定向(详见PPP man),操作起来非常简单,但效率不高。
然后就是网上高手写出的:用PPP的ppp.linkup文件用自编的脚本捕捉动态外网ip再生成a.b.c.d/32样式的
ipnat.rules文件。很明显这样作能够完成我们的要求,但实现其来很烦琐。
能不能直接写出符合动态ip地址重定向的ipnat.rules文件呢?
我在网上查到下面的写法:
rdr tun0 from any to any port = 80 ->; <internal ip>; port 80 tcp
rdr tun0 <your.host.name>;/32 port 80 ->; <Web IP>; port 80 tcp
上面的例子都回避了直接写出外网动态ip这个难题,实际上它们都是通不过的。
虽然行不通但却启发我想到map的一种写法:
map tun0 192.168.1.0/24 ->; 0/32
幸运的是rdr也支持类似的写法。假设外网动态地址属于a.b.c.0/24网段
rdr tun0  a.b.c.0/24 port 80 ->; 192.168.1.10 port 80 tcp
只要动态地址不出这个网段rdr就能正确的重定向。
很简单吧,推崇大家试试。
作者: i2era    时间: 2003-07-17 12:33
标题: 用ipnat对外网动态IP地址重定向到内网的简单解决方法。
可以用rdr中的参数: 0/0 , 而不是0/32 !
详见:
http://www.huangdong.com/bbs/showthread.php?s=&threadid=76&perpage=15&pagenumber=1
作者: slgx    时间: 2003-07-17 13:13
标题: 用ipnat对外网动态IP地址重定向到内网的简单解决方法。
原帖由 "i2era" 发表:
可以用rdr中的参数: 0/0 , 而不是0/32 !
详见:
http://www.huangdong.com/bbs/showthread.php?s=&threadid=76&perpage=15&pagenumber=1
   

这个我后来想到了:用0/0更彻底,匹配所有网址。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2