iptables 实现NAT功能

发表于:2007-07-04来源:作者:点击数: 标签:
请教高手 我有一外网IP61.0.0.1一内网IP192.168.0.1 我在外网那台机器上怎么实现让所有访问61.0.0.1的都直接到192.168.0.1 请详细指教,谢谢 天才※樱木 回复于:2004-09-28 10:31:24 我很菜鸟,不过还是请各位高手帮忙解答,很急!!! platinum 回复于:2004-

请教 高手 
我有一外网IP 61.0.0.1 一内网IP 192.168.0.1 
我在外网那台机器上怎么实现让所有访问61.0.0.1 的都直接到192.168.0.1 
请详细指教 ,谢谢

 天才※樱木 回复于:2004-09-28 10:31:24
我很菜鸟,不过还是请各位高手帮忙解答,很急!!!

 platinum 回复于:2004-09-28 10:47:38
我写过一个FIREWALL的SHELL,有注释,你找找

 hutuworm 回复于:2004-09-28 10:49:52
让所有访问61.0.0.1 的都直接到192.168.0.1 ?

你说的是反向代理 or SNAT?

 天才※樱木 回复于:2004-09-28 10:55:25
请问platinum兄弟
语法是不是这样的
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.1/24 --dport 80 -j REDIRECT --to-port 3128  

假如我 的61IP是在eth1??

 platinum 回复于:2004-09-28 10:57:56
这个是端口转向,不是地址转换

 platinum 回复于:2004-09-28 10:59:44
[quote:cd4f9cf1ee="platinum"]我写过一个FIREWALL的SHELL,有注释,你找找[/quote:cd4f9cf1ee]
http://bbs.chinaunix.net/forum/viewtopic.php?t=353019&highlight=platinum

 yuipr 回复于:2004-09-28 11:22:19
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

 platinum 回复于:2004-09-28 11:28:35
[quote:6cd0d900a8="yuipr"]echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE[/quote:6cd0d900a8]
不是这个,楼主说的是内网映射
如果映射全部数据包到内网,再加一句
iptables -t nat -A PREROUTING -d 61.0.0.1 -s ! 192.168.0.1 -j DNAT --to 192.168.0.1

 天才※樱木 回复于:2004-09-28 11:45:02
谢谢谢谢,是不是要加这么一条,以使回应包能正确返回!
iptables -t nat -A POSTROUTING -d 192.168.0.1 -j SNAT --to 192.168.0.254

此254代表61那台机器的内网IP

 platinum 回复于:2004-09-28 11:49:20
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.1 -j MASQUERADE 
iptables -t nat -A PREROUTING -d 61.0.0.1 -s ! 192.168.0.1 -j DNAT --to 192.168.0.1

 yuipr 回复于:2004-09-28 11:58:57
说说你所想实现功能吧

 天才※樱木 回复于:2004-09-28 12:25:51
谢谢platinum
不过我不昨白  “!”的作用??

 platinum 回复于:2004-09-28 12:34:00
!是“非”的意思
原理是只转发目的地址是61.0.0.1,且原地址不是192.168.0.1的数据包到192.168.0.1去,这样的话,可以避免192.168.0.1登录61.0.0.1进行控制时产生的数据包循环

 天才※樱木 回复于:2004-09-28 13:33:10
platinum  大哥
真的谢谢你,问题完全得到解决,以后我一定也要努力学习,你是我的榜样,不光是技术 方面,你这“我为人人”的精神真的是让我感动
:)

 platinum 回复于:2004-09-28 13:56:23
惭愧,最近很忙,很少上QQ了……
我一般晚上在的

 shitian8848 回复于:2004-09-28 15:40:25
platinum:
 这条nat为什么要对原地址进行判断啊?
/sbin/iptables -A PREROUTING -t nat -p tcp -s ! 192.168.0.0/24 --dport 4899 -j DNAT --to 192.168.0.2:4899

 platinum 回复于:2004-09-28 15:45:39
因为我内网的机器是通过LINUX网关出去的
如果我用RA(Romote Administrator)连别人的机器,如果不做SOURCE判断,则被GW给PREROUTING了,成了连192.168.0.2

所以,如果是内网机器连外面的4899端口,则不进行操作

 jeffreyli 回复于:2004-09-28 18:54:01
如果我是通过adsl路由上网的话,没有固定ip能不能让外网访问内网尼?


应该怎么设置呢?

就像win下面用的花生壳一样,,,

 jeffreyli 回复于:2004-09-28 18:59:27
顶,,,

 platinum 回复于:2004-09-28 22:41:34
[quote:0dc73e5775="jeffreyli"]如果我是通过adsl路由上网的话,没有固定ip能不能让外网访问内网尼?


应该怎么设置呢?

就像win下面用的花生壳一样,,,[/quote:0dc73e5775]
www.kmip.net
www.3322.org

 bearzhang 回复于:2004-09-28 23:35:29
[quote:be753d05e4="jeffreyli"]如果我是通过adsl路由上网的话,没有固定ip能不能让外网访问内网尼?


应该怎么设置呢?

就像win下面用的花生壳一样,,,[/quote:be753d05e4]

临时的还是永久的?永久的就只能用楼上的方法。
临时的可以这样:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4662 -j DNAT --to 192.168.100.5
再告诉访问者,你的ppp0接口的IP address

 platinum 回复于:2004-09-28 23:49:56
[quote:15c2afbaf9="bearzhang"]

临时的还是永久的?永久的就只能用楼上的方法。
临时的可以这样:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4662 -j DNAT --to 192.168.100.5
再告诉访问者,你的ppp0接口的IP address[/quote:15c2afbaf9]
ADSL每48小时会自动断开一次,届时ppp0设备将不再存在,上面那个策略会自动消失

 jeffreyli 回复于:2004-09-29 14:37:04
[quote:5f6df22bd0="platinum"]
ADSL每48小时会自动断开一次,届时ppp0设备将不再存在,上面那个策略会自动消失[/quote:5f6df22bd0]




是临时的,,,adsl路由直接接在交换机上,,然后其它客户机都在交换机上面接着.

我想在内网中设置一个ftp或http服务想让外网访问这台机子.

不知版主有没有好的办法怎么进行nat设置,还有申请动态域名后在linux中如何设置,,

谢谢

 jeffreyli 回复于:2004-09-29 16:35:19
up

 platinum 回复于:2004-09-29 17:49:50
[quote:13e73d37f0="jeffreyli"]




是临时的,,,adsl路由直接接在交换机上,,然后其它客户机都在交换机上面接着.

我想在内网中设置一个ftp或http服务想让外网访问这台机子.

不知版主有没有好的办法怎么进行nat设置,还有申请动态域名后在l..........[/quote:13e73d37f0]
如果你的ADSL是用MODEM自己的路由模式上网的,那么你需要在它的WEB界面下配置NAT,具体我没有弄过

至于域名和IP地址绑定问题,记得有个贴子,里面是用perl实现的,原理是直接给远程3322网站发送HTTP协议的传送字,向其告知自己的广域网IP

 jeffreyli 回复于:2004-09-29 18:17:23
如果他的web管理页面没有nat设置
是不是就不支持呢


 能不能用软件进行设置呢
谢谢

 platinum 回复于:2004-09-29 21:27:36
if (你的WEB管理不支持 or 你用ADSL路由模式上网) then
  你不能设置类似花生壳的东西
endif

 joeandjane 回复于:2004-09-29 22:34:12
做DNAT,地址映射,这个可以根据你需要提供的服务来做。

 jeffreyli 回复于:2004-09-30 17:15:58
[quote:c5e32808fe="joeandjane"]做DNAT,地址映射,这个可以根据你需要提供的服务来做。[/quote:c5e32808fe]


有没有什么好的办法能不能具体点,,,谢谢

 platinum 回复于:2004-09-30 19:31:12
[quote:e04fc752b6="joeandjane"]做DNAT,地址映射,这个可以根据你需要提供的服务来做。[/quote:e04fc752b6]
问题是,他的网关管是ADSL MODEM,不是一台装有LINUX的PC

 beanner 回复于:2004-10-08 15:02:04
也可以在路由器或防火墙上作地址或端口映射

 alqaida 回复于:2004-10-09 09:07:38
端口映射是最简单的办法。

 蓝色虫 回复于:2004-10-09 09:15:25
[quote:f8bdde84c2="天才※樱木"]请教 高手 
我有一外网IP 61.0.0.1 一内网IP 192.168.0.1 
我在外网那台机器上怎么实现让所有访问61.0.0.1 的都直接到192.168.0.1 
请详细指教 ,谢谢[/quote:f8bdde84c2]

楼主用下Zebra软件试试~~~

 shlb007 回复于:2005-06-26 10:56:36
哪位仁兄帮忙指点一下:
我在vmware中配置如下:
 /sbin/iptables -P INPUT  ACCEPT
 /sbin/iptables -P OUTPUT  ACCEPT
 /sbin/iptables -P FORWARD  ACCEPT

echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.168.0.227 --dport 80 -j DNAT --to-destination 192.168.100.2
却为何在192.168.0.0的网段中无法访问192.168.100.2的web服务

原文转自:http://www.ltesting.net