免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1468 | 回复: 2
打印 上一主题 下一主题

[网络管理] ip隧道过来的包,为何不能转发? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-17 17:59 |只看该作者 |倒序浏览
本帖最后由 owenwell 于 2015-08-17 18:05 编辑

需求,A要转包到C,但A的机房做了源地址过滤,转发的包被机房网络设备丢弃,所以计划A转包通过ip隧道到B,B再转发到C,因为A的地址已经固定,不方便更换,所以没有直接做B转发到C。
A、B、C都是ubuntu,都已经设置 echo 1 > /proc/sys/net/ipv4/ip_forward ,都可以互相ping通,iptables的默认策略都是ACCEPT。

A机器的配置、设置及抓包情况
eth0:1.1.1.1
gre0:10.0.0.1
ip route add 3.3.3.3 dev gre0
iptables -t nat -A PREROUTING -d 1.1.1.1 -p udp --dport 5000:5010 -j DNAT --to-destionation 3.3.3.3
测试时抓包可以看到
eth0:本机ip--》1.1.1.1
gre0:本机ip--》3.3.3.3

B机器的配置、设置及抓包情况
eth0:2.2.2.2
gre0:10.0.0.2
测试时抓包可以看到
gre0:本机ip--》3.3.3.3

C机器的配置
eth0:3.3.3.3
测试时没有收到通过ip隧道转来的包

A、B间的隧道是通的,互相ping对方的gre地址都可以,在B机器上直接发送5000-5010端口的udp包到C,C也可以收到,在B机器上通过iptables来转发对应端口的包到C,C也可以收到。
我的理解,A转发的包到B后,因为目的地址不是本机,gre出来的包应该通过eth0转发到C,但现在B机器上却没有路由转发。后来又尝试用ipip隧道,同样只能到B,B却没有通过eth0转发到C

请各位指教一下该如何设置,来实现A转发到C的需求?
啰嗦一下,具体的需求是:
在A上接到:客户ip--》1.1.1.1的包,改写目标地址为C,并转发到C
在C上接到:客户ip--》3.3.3.3的包

论坛徽章:
0
2 [报告]
发表于 2015-08-18 17:48 |只看该作者
这两天把我能想到的每种数据包都测试了一遍
发现隧道中传输的数据包,如果源地址不是remotevip,就无法进入协议栈,无法用iptables来处理
例如:A vip:10.0.0.1,B vip:10.0.0.2 gre隧道
一个数据包从A到B,如果到达B的数据包源地址不是10.0.0.1,此数据包就无法用iptables来处理,也无法被B机器上的程序来处理。

可是需求是要转发数据包,如何把转发的包通过隧道传递呢?

论坛徽章:
0
3 [报告]
发表于 2015-09-06 14:01 |只看该作者
自己解决了
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP