免费注册 查看新帖 |

Chinaunix

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

有关禁用Ipv4协议栈/保留IPV6协议栈的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-22 10:51 |只看该作者 |倒序浏览
有关禁用Ipv4协议栈/保留IPV6协议栈的问题
系统版本:fedora 13
内核版本:2.6.33.3-85

禁用Ipv4协议栈/保留IPV6协议栈后要达到的效果:
1.        不能建立IPV4类型的socket
2.        可以建立IPV6类型的socket进行通信

已经尝试的方法:
1. 尝试动态卸载IPV4模块:失败,可能是因为IPV4协议栈不可动态加载。
2. 尝试重新编译内核:在配置编译选项时,发现当取消IPV4协议栈时,IPV6也被取消了, 也就是说IPV6协议栈的编译是依赖IPV4协议栈的。并且也不能按照动态加载方式来编译IPV4协议栈。

/lib/modules/2.6.33.3-85.fc13.i686.PAE/kernel/net/ipv4目录下的模块列表
ah4.ko
esp4.ko
inet_diag.ko
ipcomp.ko
ip_gre.ko
ipip.ko
netfilter(目录)
tcp_bic.ko
tcp_diag.ko
tcp_highspeed.ko
tcp_htcp.ko
tcp_hybla.ko
tcp_illinois.ko
tcp_lp.ko
tcp_scalable.ko
tcp_vegas.ko
tcp_veno.ko
tcp_westwood.ko
tcp_yeah.ko
tunnel4.ko
xfrm4_mode_beet.ko
xfrm4_mode_transport.ko
xfrm4_mode_tunnel.ko
xfrm4_tunnel.ko

问题:
1.        目前linux内核现状有没有可能实现纯IPV6的配置?
2.        如果1是可能的,有什么好方法?
3.        Linux内核IPV6的实现是否依赖于IPV4的实现?(现状是IPV6兼容IPV4)

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2010-12-22 12:53 |只看该作者
LZ 能否说一下,你想卸载 ipv4 的模块时,是卸载的那个啊?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2010-12-22 12:56 |只看该作者
我了解到一种使用 IPv6 的方式就是 IPv6-over-IPv4.
因为主干网络还是 IPv4,两台公网的 IPv6 设备要通信,一种方式就是上面提到的。这时候,IPv6 实际上是封装在 IPv4 包头之下的。
# cat /etc/protocols  | grep IPv6
ipv6    41      IPv6            # IPv6


可以看到 proctols 文件中,IPv6 是以编号 41 放在 IPv4 中的。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2010-12-22 13:16 |只看该作者
IPv4 应该是静态编译进内核了,IPv6 可以选择以内核模块方式编译
Symbol: IPV6 [=m]                                                                                                                                                        
  Type  : tristate                                                                                                                                                         
  Prompt: The IPv6 protocol                                                                                                                                                
     Defined at net/ipv6/Kconfig:6                                                                                                                                          
     Depends on: NET [=y] && INET [=y]                                                                                                                                      
     Location:                                                                                                                                                               
       -> Networking support (NET [=y])                                                                                                                                      
         -> Networking options                                                                                                                                               
           -> TCP/IP networking (INET [=y])

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2010-12-22 13:22 |只看该作者
不过我觉得你可以试试,保证 CONFIG_INET 和 CONFIG_NET 这两个选项均配置,其他的关于 ipv4 的都去掉,编译一下。

论坛徽章:
0
6 [报告]
发表于 2010-12-22 18:09 |只看该作者
楼主要达到的效果不用改内核。

Linux支持Function Override,劫持socket调用,AF_INET直接返回-1,否则调用真正的socket。

类似这样:

  1. / * original socket is saved in __socket */
  2. int socket(int domain, int type, int protocol)
  3. {
  4.     return domain == AF_INET ? -1 : __socket(domain, type, protocol);
  5. }
复制代码


剩下的问题,如何覆盖所有进程的socket。

论坛徽章:
0
7 [报告]
发表于 2010-12-22 18:15 |只看该作者
忘了说了,AF_INET情况下,最好设置errno为EAFNOSUPPORT,虽然有点恶搞。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP