基于 WordPress | 主题由 mg12 提供 | 通过 XHTML 1.1CSS 3 验证
  • 通过 Openswan 建立 Linux-Linux 之间的 VPN 隧道

    写在开头的话

    其实这个实验还没有做完,一方面虚拟机环境里面有些内容已经很难实现(可能是先天缺陷),有空的时候我会对这个实验进行抓包,来给自己排错。但目前由于公司环境需求,我必须进行 Subversion 的学习了。

    一、网络架构

    必须模拟出两个网段来做这个实验。于是就有了这样的结构:

    net

    点击图片查看大图。

    我们将网段分为了三个:

    10.10.0.0/24:模拟公网网段,两个网关可以在这里互相访问。
    172.16.1.0/24:Left子网。
    172.16.2.0/24:Right子网。

    通常我们在做实验的时候,将两个子网分别命名为 LeftRight

    二、Openswan

    Openswan 是一套基于 Ipsec 的 Linux 工具。类似的工具还有 Strongswan 和 早已停止开发的 Freeswan
    Openswan 的 wiki 详细列出了 他与 Strongswan 在功能上的区别

    三、系统环境

    由于我不太喜欢自己编译,所以选择了 Debian 系统。使用 CentOS 的用户可能需要自己下载源代码编译 Openswan。

    1. Sysctl 配置

    编辑 /etc/sysctl.conf ,确保有以下内容:

    net.ipv4.conf.default.rp_filter=0
    net.ipv4.conf.default.forwarding=1
    net.ipv4.conf.eth2.send_redirects=0
    net.ipv4.conf.eth1.send_redirects=0
    net.ipv4.conf.default.send_redirects=0
    net.ipv4.conf.all.send_redirects=0
    net.ipv4.conf.eth2.accept_redirects=0
    net.ipv4.conf.eth1.accept_redirects=0
    net.ipv4.conf.default.accept_redirects=0
    net.ipv4.conf.all.accept_redirects=0
    net.ipv4.conf.all.forwarding=1

    forwarding 参数大家肯定已经很熟悉了,用网关做 NAT 时肯定会用到。其他参数是我在排错的时候一点一点添加进去的。具体的用途也还不清楚。等弄懂了添加上来。

    若此步没有做好,在执行 ipsec verify 的时候会报错。

    2. 软件安装

    apt-get install openswan

    openswan-1

    安装过程中会出现一系列配置提示,一般选择默认即可。

    openswan-2

    这里不用开启。

    openswan-3

    是否创建 Host key。选择是。

    openswan-4

    Key 的加密类型。

    openswan-5

    配置 Openswan 使用key。这里“是”“否”,我都选过,其实无大碍。后面可以自己生成 key。

    openswan-6

    选择 Yse。

    基本的系统环境就已经有了。

    3.检查 ipsec 的状态

    通过 ipsec verify 命令检查状态,正常输出如下:

    debian:/etc# ipsec verify
    Checking your system to see if IPsec got installed and started correctly:
    Version check and ipsec on-path [OK]
    Linux Openswan U2.4.6/K2.6.18-4-686 (netkey)
    Checking for IPsec support in kernel [OK]
    NETKEY detected, testing for disabled ICMP send_redirects [OK]
    NETKEY detected, testing for disabled ICMP accept_redirects [OK]
    Checking for RSA private key (/etc/ipsec.secrets) [OK]
    Checking that pluto is running [OK]
    Two or more interfaces found, checking IP forwarding [OK]
    Checking NAT and MASQUERADEing [N/A]
    Checking for ‘ip’ command [OK]
    Checking for ‘iptables’ command [OK]
    Opportunistic Encryption Support [DISABLED]

    若不正常,请按照 Sysctl 配置 里面的内容修改配置文件。

    四、配置 Openswan

    1. 在两台服务器上生成 Hostkey。

    生成 key : ipsec newhostkey --output /etc/ipsec.secrets
    在 LeftSrv 上 showkey:ipsec showhostkey --left
    在 RightSrv 上 showkey:ipsec showhostkey --right

    在 showkey 时我们会得到类似一下的输出:

    # RSA 2192 bits ubuntu-latteye Sun Sep 30 08:25:11 2007 leftrsasigkey=0sAQOe8Y5AxAmgh0yki8QAMmiBGxC….

    记住他,后面需要添加进 ipsec.conf 文件中。

    2. 配置 ipsec.conf

    以下是我的配置文件:

    conn a
    left=10.10.0.2
    leftsubnet=172.16.1.0/24
    leftid=@left
    leftrsasigkey=0sAQOe8Y5AxAmgh0yki8QA….
    leftnexthop=%defaultroute
    right=10.10.0.3
    rightsubnet=172.16.2.0/24
    rightid=@right
    rightrsasigkey=0sAQNS9hPmgmzkwDMHqDZ…
    rightnexthop=%defaultroute
    auto=add

    conn a: 给这个连接起个名字 a
    left:左网关地址
    right:右网关地址
    leftsubnet:左子网环境地址
    rightsubnet:右子网环境地址
    leftid,rightid:只是标识,起个名字。
    leftnexthop:下一跳路由地址。
    left or rightrsasigkey:上面showhostkey出来的内容就添加在这后面。注意!left和right一定要区分开!
    auto=add:手动启动链接。

    五、启动链接

    ipsec auto --up a

    ——————————————–

    我的实验就到此为止了,由于是虚拟机,在生成 key 和 链接的时候出现了一些问题。系统没有任何反映,CPU 使用也没有增加,就卡在那里。但是真实机器并不会这样。

    这个实验何时能有进展,我会继续修改此文。

    这里的中断并不会影响 ipsec-fortigate 的实验。我已经了解了 ipsec 的工作配置方式。

    2007年10月11日17:46
  • kith
    2008年3月25日04:13 | #1

    为什么
    Checking that pluto is running [Failed]?
    如何解决?
    注: net.ipv4.conf.forwarding=1

  • 2008年4月7日23:50 | #2

    pluto 应该在 ipsec 服务启动的时候被自动加载。是否已经启动 ipsec 服务了呢?

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">
1 trackbacks/pingbacks
置顶