免费注册 查看新帖 |

Chinaunix

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

[网络管理] 打pptp补丁,个别模块不能编译进内核的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-14 14:46 |只看该作者 |倒序浏览
linux内核:2.6.9
iptables 1.3.7

打完pptp补丁后,重新编译内核,将GRE Protocol support  和 PPTP Protocol support 都选为 "编进内核";
子网机拨号时,发现ip_nat_proto_gre并未编进内核,必须手动加载模块才可以;茫然中,不知为何???

linux内核 2.4.25 不存在这种问题!
请各位指点,谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-03-14 21:23 |只看该作者
截个图看看?

论坛徽章:
0
3 [报告]
发表于 2007-03-15 10:33 |只看该作者
原帖由 platinum 于 2007-3-14 21:23 发表于 2楼  
截个图看看?


谢谢!
我不知该截什么图!因为表现就是拨号上不去!

在ip_nat_proto_gre.c 和 ip_conntrack_proto_gre.c 执行处加打印语句,发现 ip_conntrack_proto_gre.c 执行了!但ip_nat_proto_gre.c未执行!

我将 ip_nat_proto_gre.ko 手动加载, 可以加载,说明未编进内核!其余三个都会报错!

加载后,拨号正常!

论坛徽章:
0
4 [报告]
发表于 2007-03-15 10:40 |只看该作者
为何一定要编入内核呢?
若以 module 形式加载,需要时再用不很好吗?

论坛徽章:
0
5 [报告]
发表于 2007-03-15 13:31 |只看该作者
编成模块也可以!
只是 我不明白上述问题是什么原因,所以想问一下!

论坛徽章:
0
6 [报告]
发表于 2007-03-15 13:53 |只看该作者
能否再提供更详细的信息
比如你的详细做法,以及 iptables-save 配置、以及 /var/log/messages 的敏感信息等
你现在提供的信息量太少,无法判断

论坛徽章:
0
7 [报告]
发表于 2007-03-15 16:36 |只看该作者
原帖由 platinum 于 2007-3-15 13:53 发表于 6楼  
能否再提供更详细的信息
比如你的详细做法,以及 iptables-save 配置、以及 /var/log/messages 的敏感信息等
你现在提供的信息量太少,无法判断


我用PC (内核:2.6.9, iptables 1.3.7, 双网卡) 作NAT转发
iptables 规则只有一条:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

filter 默认均为 ACCEPT


现在NAT下 PC(姑且称作子网PC)想通过PPTP连接到 外部PC,因为NAT的存在,直接拨号拨不上去,所以须添加ALG;
我从netfilter官方网站下载 050801 补丁包,打完补丁包后,重新编译,将其编译进内核,测试!
发现拨号拨不上去,抓包分析可知TP的 Connect Control 正常,在IP Tunnel Operation,建立隧道过程存在问题!
查看连接跟踪表,如下:

gre      47 599 timeout=600, stream_timeout=432000 src=172.22.113.240 dst=172.22.113.50 srckey=0x1d80 dstkey=0xe32 [UNREPLIED] src=192.168.2.2 dst=172.22.113.240 srckey=0xe32 dstkey=0x1d80 use=1
tcp      6 431987 ESTABLISHED src=192.168.2.2 dst=172.22.113.240 sport=3634 dport=1723 src=172.22.113.240 dst=172.22.113.50 sport=1723 dport=3634 [ASSURED] use=2

分析,可知ip_conntrack_pptp 和 ip_nat_pptp,以及ip_conntrack_proto_gre 不存在问题,因为如果 ip_conntrack_proto_gre 有问题的话,跟踪表第一个显示的协议 就不应该是 gre 而 应该是 unknow

所以应该是 ip_nat_proto_gre没有达到效果,我仔细查看了其源码,没有发现问题!
加打印语句输出,发现在do_binding函数中,查找到的协议名是 unknow , 而在 ip_conntrack_in中 查找到的协议名是 gre
所以可知 ip_nat_proto_gre 有问题

然后,我将其以模块方式编译,再测试,拨号可以正常连接,所以 ip_nat_proto_gre 代码应该没有问题;
我重新编译进内核后,试着加载模块,结果 其余三个 都报错 ,而 ip_nat_proto_gre 可以正常加载!

/var/log/messages 内没有发现信息
打完补丁后部分 Makefile 如下:

# SCTP protocol connection tracking
obj-$(CONFIG_IP_NF_CT_PROTO_GRE) += ip_conntrack_proto_gre.o

# NAT protocol helpers
obj-$(CONFIG_IP_NF_NAT_PROTO_GRE) += ip_nat_proto_gre.o

obj-$(CONFIG_IP_NF_CT_PROTO_SCTP) += ip_conntrack_proto_sctp.o

# connection tracking helpers
obj-$(CONFIG_IP_NF_PPTP) += ip_conntrack_pptp.o
obj-$(CONFIG_IP_NF_AMANDA) += ip_conntrack_amanda.o
obj-$(CONFIG_IP_NF_TFTP) += ip_conntrack_tftp.o
obj-$(CONFIG_IP_NF_FTP) += ip_conntrack_ftp.o
obj-$(CONFIG_IP_NF_IRC) += ip_conntrack_irc.o

# NAT helpers
obj-$(CONFIG_IP_NF_NAT_PPTP) += ip_nat_pptp.o
obj-$(CONFIG_IP_NF_NAT_AMANDA) += ip_nat_amanda.o
obj-$(CONFIG_IP_NF_NAT_TFTP) += ip_nat_tftp.o
obj-$(CONFIG_IP_NF_NAT_FTP) += ip_nat_ftp.o
obj-$(CONFIG_IP_NF_NAT_IRC) += ip_nat_irc.o

部分Kconfig 如下:
config IP_NF_CT_PROTO_GRE
        tristate  ' GRE protocol support'
        depends on IP_NF_CONNTRACK
        help
          This module adds generic support for connection tracking and NAT of the
          GRE protocol (RFC1701, RFC2784).  Please note that this will only work
          with GRE connections using the key field of the GRE header.
         
          You will need GRE support to enable PPTP support.
         
          If you want to compile it as a module, say `M' here and read
          Documentation/modules.txt.  If unsire, say `N'.
         
config IP_NF_PPTP
        tristate  'PPTP protocol support'
        depends on IP_NF_CT_PROTO_GRE
        help
          This module adds support for PPTP (Point to Point Tunnelling Protocol,
          RFC2637) conncection tracking and NAT.
         
          If you are running PPTP sessions over a stateful firewall or NAT box,
          you may want to enable this feature.  
         
          Please note that not all PPTP modes of operation are supported yet.
          For more info, read top of the file net/ipv4/netfilter/ip_conntrack_pptp.c
         
          If you want to compile it as a module, say M here and read
           Documentation/modules.txt.  If unsure, say `N'.

config IP_NF_NAT_PPTP
        tristate
        depends on IP_NF_NAT!=n && IP_NF_PPTP!=n
        default IP_NF_NAT if IP_NF_PPTP=y
        default m if IP_NF_PPTP=m

config IP_NF_NAT_PROTO_GRE
        tristate
        depends on IP_NF_NAT!=n && IP_NF_CT_PROTO_GRE!=n
        default IP_NF_NAT if IP_NF_CT_PROTO_GRE=y
        default m if IP_NF_CT_PROTO_GRE=m


麻烦你帮忙看一下,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP