免费注册 查看新帖 |

Chinaunix

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

配置隧道路由器的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-05 10:58 |只看该作者 |倒序浏览
小弟遇到一个问题,困惑了好几天,具体如下。
我有一个主机,就叫A吧,双网卡,eth0上有一个公网的IP,ipv4的。通过下面的一些命令,建立ipv6 over ipv4 的隧道就可以联结到校内的IPV6网络,并且可以 pin6 ipv6.google.com 成功。

  1.          # ip tunnel add sit1 mode sit remote $remote_addr local $local_addr
  2.          # ifconfig sit1 up
  3.          # ifconfig sit1 add 2001:DA8:C800:B1:0:5EFE:$local_addr
  4.          # ip route add ::/0 via 2001:DA8:C800:B1:0:5EFE:CACA:D962 metric 1
复制代码

其中 $remote_addr 是远程的公网ip地址, $local_addr是我的主机的eth0上的公网ip,均为ipv4.

因为A是双网卡,我想把另外一台主机,假设为B,连接到 A的eth1上,想通过隧道,也联结到远端的ipv6网络,应该如何做呢? 主机A的IPV6的转发功能已经打开。

有这样的一篇文章可以参考,http://linux.chinaunix.net/bbs/viewthread.php?tid=354359,这是一篇翻译的文章,原文在这里,
http://www.deepspace6.net/docs/iproute2tunnel-en.html

里面讲到了,如何把隧道建立在一个router上,但是讲得比较模糊,或者是小弟我的理解能力有限。里面有一段是这样讲的,
5.3、隧道IP地址
当我们的计算机是一个独立主机或者不是一个提供到整个局域网IPv6连接的路由器时,为本地端节点隧道选择一个全球/公用IP地址是最好的事,分别是一个SIT/IPv6-in-IPv4隧道的IPv6地址和一个GRE/IPv4-in-IPv4隧道的IPv4地址。
       取而代之,若配置一个路由器,最好让SIT/IPv6-in-IPv4隧道用一个链路本地地址(IPv6的链路本地地址可以通过无状态地址自动配置或者人工配置)和GRE/IPv4-in-IPv4隧道用一个私有地址(IPv4没有链路本地地址)。有效的地址只能用在eth0上(或者在局域网那边的接口上)。注意在配置的时候需要激活转发接口,用命令:
sysctl -w net.ipv4.conf.all.forwarding=1  # for GRE (IPv4-in-IPv4)
sysctl -w net.ipv6.conf.all.forwarding=1  # for SIT (IPv6-in-IPv4)
甚至可以决定打开在一对间转发,这种情况下,用如下命令:
sysctl -w net.ipv6.conf.eth0.forwarding=1
sysctl -w net.ipv6.conf.pippo.forwarding=1


5.3. Which IP for the tunnel

Choosing a global/public IP address (respectively an IPv6 address for SIT/IPv6-in-IPv4 tunnels and an IPv4 address for GRE/IPv4-in-IPv4 tunnels) for the local endpoint of the tunnel is probably the best thing we can do when our computer is a single host and not a router providing IPv6 connectivity to a whole LAN.

Instead, if we're configuring a router, we'd better use a link-local address for SIT/IPv6-in-IPv4 tunnels (in IPv6 link-local addresses are assigned automatically by means of stateless address autoconfiguration or manually configured) and a private address for GRE/IPv4-in-IPv4 tunnels (IPv4 has no link-local addresses). The valid address will then be only on eth0 (or the interface on the LAN side). Notice that in this configuration you need to activate forwarding among interfaces, using these commands:

sysctl -w net.ipv4.conf.all.forwarding=1  # for GRE (IPv4-in-IPv4)
sysctl -w net.ipv6.conf.all.forwarding=1  # for SIT (IPv6-in-IPv4)
      

For IPv4 you can even decide to enable forwarding only between a couple of interfaces, in this case you could use these commands:

sysctl -w net.ipv4.conf.eth0.forwarding=1
sysctl -w net.ipv4.conf.pippo.forwarding=1
      


主要就是这个绿色的部分。 说在配置一个路由器的时候,最好为sit/ipv6-in-ipv4的隧道使用 link-local的地址,link-local的地址是自动分配的ipv6的地址,似乎很难用上? 而且用link-local的地址,是不能通过router的。 迷惑几天,希望得到高手的指点。

[ 本帖最后由 futuregod 于 2008-12-5 10:59 编辑 ]

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2008-12-05 11:11 |只看该作者
是的。如果仅仅要本地通讯的话,LOCAL地址是可以的。如果要跨路由则配置全局IPV6地址。

论坛徽章:
0
3 [报告]
发表于 2008-12-05 11:26 |只看该作者

回复 #2 ssffzz1 的帖子

可是在route上做 ipv6 over ipv4的隧道该如何做了呢?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
4 [报告]
发表于 2008-12-05 11:38 |只看该作者
你自己吧命令都帖出来了啊。

论坛徽章:
0
5 [报告]
发表于 2008-12-05 11:49 |只看该作者

回复 #4 ssffzz1 的帖子

确实贴出来了。不过这个适用于
5.3、隧道IP地址
当我们的计算机是一个独立主机或者不是一个提供到整个局域网IPv6连接的路由器时,为本地端节点隧道选择一个全球/公用IP地址是最好的事,分别是一个SIT/IPv6-in-IPv4隧道的IPv6地址和一个GRE/IPv4-in-IPv4隧道的IPv4地址。
       取而代之,若配置一个路由器,最好让SIT/IPv6-in-IPv4隧道用一个链路本地地址(IPv6的链路本地地址可以通过无状态地址自动配置或者人工配置)和GRE/IPv4-in-IPv4隧道用一个私有地址(IPv4没有链路本地地址)。有效的地址只能用在eth0上(或者在局域网那边的接口上)。注意在配置的时候需要激活转发接口,用命令:
sysctl -w net.ipv4.conf.all.forwarding=1  # for GRE (IPv4-in-IPv4)
sysctl -w net.ipv6.conf.all.forwarding=1  # for SIT (IPv6-in-IPv4)
甚至可以决定打开在一对间转发,这种情况下,用如下命令:
sysctl -w net.ipv6.conf.eth0.forwarding=1
sysctl -w net.ipv6.conf.pippo.forwarding=1

中的第一种情况,我现在是第二种情况,不一样的呀。

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
6 [报告]
发表于 2008-12-05 11:59 |只看该作者
你就是起一个隧道,然后问管理员要一个IPV6地址就可以了啊。隧道自身配置这个地址,两端是IPV4地址即可。

论坛徽章:
0
7 [报告]
发表于 2008-12-05 13:52 |只看该作者

回复 #6 ssffzz1 的帖子

楼上说的有道理。不过因为我的那个sit1 接口上用的ip地址是这样形成的2001A8:C800:B1:0:5EFElocal_addr,
打个比方
2001A8:C800:B1:0:5EFE:192.168.0.33
当然192.168.0.33要换成公网ip的。所以我怀疑是否这个隧道只有让公网ip上的包通过。

我在想如何能够让eth1接口上的ipv6的包,通过这个隧道出去。

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
8 [报告]
发表于 2008-12-05 14:07 |只看该作者
那我就不清楚了。这个是你们自己的限制问题,和该配置无关。

论坛徽章:
0
9 [报告]
发表于 2008-12-05 14:11 |只看该作者
我发现,sit1上的ipv6的地址,只能是
  1. 2001:DA8:C800:B1:0:5EFE:$local_addr
复制代码


local_addr如果跟命令
  1. ip tunnel add sit1 mode sit remote $remote_addr local $local_addr
复制代码
中的
local_addr不同,则 无法用ping6, ping 通ipv6.google.com

所以我的方法建立的隧道只可以让一个地址的ipv6通过。

因为我试了其他的local_addr,都不行。

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
10 [报告]
发表于 2008-12-05 14:27 |只看该作者
这个不是你的问题,和你的环境有关系的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP