免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sqp1982
打印 上一主题 下一主题

iptable做端口映射问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-03-08 17:57 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
12 [报告]
发表于 2005-03-08 18:09 |只看该作者

iptable做端口映射问题

内部建dns当然是可以的~用内网ip访问也是可以的
但是在同一内网不能用公网ip访问,我这里也是这样~

论坛徽章:
0
13 [报告]
发表于 2005-03-08 20:18 |只看该作者

iptable做端口映射问题

原帖由 "sqp1982" 发表:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.1:80

一样不行 这样效果一样 而且内网用户上不了了 &我的是adsl上网

这需要一个小技巧
如果你的IP是静态的,你加上-d 静态IP,就能过滤掉内网出去的包了
如果你是动态IP,那也好办,加上-s ! 内网网段,这样也就把内网包排除了

你的应该修改为
iptables -t nat -A PREROUTING -s ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192.168.0.1

论坛徽章:
0
14 [报告]
发表于 2005-03-09 10:33 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
15 [报告]
发表于 2005-03-09 10:37 |只看该作者

iptable做端口映射问题

内网是不能通过那个公网ip访问...不是说过了嘛?
原因我不太清楚~但是包在网关丢了~
我感觉在网关那里就变成源地址与目的地址相同了。因为在转发前会会经过POSTROUTING,那么packet的源地址改成公网ip了

讨论一下同一机器内部是走哪个链?
platinum没看懂你的意思...
至于-s ! 192.168.x.x其实就等同与-i ppp0

论坛徽章:
0
16 [报告]
发表于 2005-03-09 10:55 |只看该作者

iptable做端口映射问题

哦,我误解了,sorry
你的是动态IP,实现不了
如果你的是静态IP,你可以这样
iptables -t nat -I PREROUTING -d 静态公网IP -p tcp --dport 端口 -j DNAT --to 内网IP

如果你非要实现,也可以,家里也是ADSL,也是动态IP
于是我写了个简单的脚本,查找ifconfig里面ppp0设备的IP地址,然后更新PREROUTING链的-d IP,最后sleep 60,后台运行

呵呵

论坛徽章:
0
17 [报告]
发表于 2005-03-09 10:58 |只看该作者

iptable做端口映射问题

这样吧~如果要内部也同样访问~
那么就在内部搭个dns吧~把所有机器的dns都指向该dns服务器,上面加个A记录,xx.xxx.com到192.168.0.1,问题就解决了
不过我还是希望有人可以讨论一下这种情况.
感觉包在网关那里应该是因为源地址和目的地址相同而被丢弃了~

论坛徽章:
0
18 [报告]
发表于 2005-03-09 11:01 |只看该作者

iptable做端口映射问题

问一下platinum,这里我对包在网关的传递不太清楚...能不能讲解一下?

我说一下我的拓扑,掩码为22的子网
PC1:192.168.37.188
PC2:192.168.39.75
网关:192.168.39.254/222.46.x.x

在网关上做snat
ifconfig eth1:1 222.46.y.y
iptables -t nat -I POSTROUTING -s 192.168.37.188 -j SNAT --to 222.46.y.y
iptables -t nat -I PREROUTING -d 222.46.y.y -j DNAT --to 192.168.37.188

试问,假如192.168.39.75想访问222.46..y.y时,会发生什么情况?
我在192.168.39.75的机器上
ftp 222.46.y.y.
同时在192.168.37.188上tcpdump -n src 192.168.39.75
结果发现192.168.37.188收到了SYN包,但是却返回了一个RST????
为什么会返回RST???

论坛徽章:
0
19 [报告]
发表于 2005-03-09 11:05 |只看该作者

iptable做端口映射问题

PREROUTING是在路由之前先改变包结构的
POSTROUTING是在路由之后改变

PREROUTING收到目的地址是公网的IP(端口)后,把包的目的地址替换成内网IP(端口),然后把加工完的包放回去开始路由,于是,对于系统来说,这就是一个普通的访问内网IP的数据包了

当包返回的时候,为了能回流,必须再经过POSTROUTING,使从内网IP出来的包能在路由出去之后修改一下源地址,使公网IP与要访问那个机器的用户之间建立一条通道,达到合法连接

论坛徽章:
0
20 [报告]
发表于 2005-03-09 11:10 |只看该作者

iptable做端口映射问题

这个我当然知道~流程我是清楚的~
问题在于同一台机器两块网卡之间是按什么标准来走链的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP