配置Linux防火墙使PPTPVPN协议可穿透-ChinaUnix操作系统频道

 PPTP VPN在默认的Linux防火墙下是无法穿透的,而SSL VPN则可以,为了能透过Linux防火墙拨号到其后的PPTP VPN服务器,必须在Linux防火墙上安装netfilter的patch-o-matic-ng补丁。

    本文以2.4内核的RedHat Linux AS 3.0 update 3 为例,说明操作的过程。

    安装步骤

    1、确定版本

    uname -r 可以得到当前的内核版本号为 2.4.21-20.ELsmp (服务器是支持超线程的至强处理器)

    2、下载必要的软件并解压

    cd /usr/src/

    wget -c

    ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20050816.tar.bz2

    wget -c

    ftp://ftp.netfilter.org/pub/iptables/iptables-1.3.1.tar.bz2

    tar xjvf patch-o-matic-ng-20050816.tar.bz2

    tar xjvf iptables-1.3.1.tar.bz2

    3、进入内核源代码进行设置

    在做这步之前最好备份源代码,以便在配置错误时能恢复

    cd /usr/src/

    cp -a linux-2.4.21-20.EL linux-2.4.21-20.EL.backup

    一旦内核选项和补丁配置错误,可以使用下面的命令恢复内核

    cd /usr/src/

    rm -rf linux-2.4.21-20.EL

    cp -a linux-2.4.21-20.EL.backup linux-2.4.21-20.EL

    进入源代码目录

    cd /usr/src/linux-2.4.21-20.EL

    清除以前编译内核留下的内容

    make mrproper

    make menuconfig 什么都不做,直接退出并保存

    vi Makefile 将 EXTRAVERSION=-20.ELcustom 修改为 EXTRAVERSION=-20.ELsmp (和当前的内核版本相同)

    4、打补丁

    cd /usr/src/patch-o-matic-ng-20050816

    export KERNEL_DIR=/usr/src/linux-2.4.21-20.EL

    export IPTABLES_DIR=/usr/src/iptables-1.3.1

    ./runme base 这一项中,将能打的补丁都安装上,如果有冲突不能安装的按N

    ./runme extra 这一项中,除了我们需要的 pptp-conntrack-nat 之外,其它的都不安装

    5、重新配置内核并编译内核模块

    cd /usr/src/linux-2.4.21-20.EL

    make menuconfig

    确认

  • Prompt for development and/or incomplete code/drivers要选中,然后进入Networking options,再进入IP:Netfilter Configuration,会看到增加很多模块,把你想要的选中“”(我们这里就是选择PPTP和GRE相关的项),保存、退出,至此,给netfilter打补丁工作完成

        make dep

        make modules SUBDIRS=net/ipv4/netfilter

        cp -f net/ipv4/netfilter/*.o /lib/modules/2.4.21-20.ELsmp/kernel/net/ipv4/netfilter/ 复制编译好的模块到对应内核中

        depmod -a 检查模块依赖性

        这里注意,可能会提示依赖错误(ipchains和ipfw),由于这两个是不使用的,所以用下面的命令删除几个模块

        rm -rf /lib/modules/2.4.21-20.ELsmp/kernel/net/ipv4/netfilter/ipfwadm_core.o

        rm -rf /lib/modules/2.4.21-20.ELsmp/kernel/net/ipv4/netfilter/ipchains_core.o

        rm -rf /lib/modules/2.4.21-20.ELsmp/kernel/net/ipv4/netfilter/ip_fw_compat.o

        再使用depmod -a命令,应该不会再提示错误

        6、编译iptables

        cd /usr/src/iptables-1.3.1

        make BINDIR=/sbin LIBDIR=/lib MAINDIR=/usrshare/man install

        ln -s /lib/iptables /usr/local/lib/iptables

        至此,工作基本完成,为了使前面的修改生效,系统最好重新启动一下

        7、为了能透过防火墙使用FTP和VPN,需要装载 ip_nat_ftp、ip_nat_pptp 和 ip_nat_proto_gre 模块,使用 modprobe ip_nat_ftp 装载模块时提示以下错误

        modprobe: Too deep recursion in module dependencies!

        modprobe: Circular dependency? ip_nat_core ip_nat_proto_udp ip_conntrack ip_nat_ftp

        Aborted

        为解决这个问题,使用下面的方法

        cd /lib/modules/2.4.21-20.ELsmp

        vi modules.dep

        找到ip_nat_ftp,删除其后的依赖项 ip_nat_core,如果有 ip_nat_helper 或者 ip_nat_standalone 的话一并删除,存盘后重新使用 modprobe ip_nat_ftp 装载模块,一般就没有问题了,此时使用 lsmod 可以看到 ip_nat_ftp 模块已正确加载。

        对于 ip_nat_pptp 和 ip_nat_proto_gre 模块,也可以使用同样的方法解决并加载。

        至此,neifilter补丁安装完毕,在正确配置iptables脚本之后,就可以通过Linux防火墙拨号到其后的PPTP VPN服务器了。

  • 来源URL:http://os.chinaunix.net/a2007/0202/959/000000959268.shtml