首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pluto在ipsec VPN上找不到接口

Pluto在ipsec VPN上找不到接口
EN

Unix & Linux用户
提问于 2014-09-18 00:00:17
回答 2查看 10K关注 0票数 2

我试图设置ipsec,但是冥王星似乎没有绑定到公共IP和IPsec内核需要更新。

这就是我到目前为止想出的:-IPSec验证我的内核不支持IPsec的状态

-我已经让VPS提供者在主机上的openvz环境中启用了IPSec,但是他们说我必须重新构建内核,并为我提供了一个连接到linux内核存档站点的通用linux内核。

-我试过构建内核并安装它,但我似乎无法让它正确安装。最后一步是'mkinitramfs -o initrd.img-3.16.3 3.16.3‘。

-tutorials状态使用grub,但是我在VPS上,不认为grub甚至在我的VPS映像上?我遵循的一个教程是:http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html

  • 我尝试了一些grub命令,但似乎什么也没有。如何从容器中将内核写入VPS容器?

-I已经放弃了从源代码构建,并找到了*.deb内核包并尝试安装它们,它们似乎解包,没有错误来自它,但当我重新启动它仍然是旧的内核,有一个特殊的命令,您使用dpkg-buildpackage让它安装吗?因为它是一个VPS,所以没有启动加载程序而导致安装问题吗?(假设容器不包含引导加载程序?)

这是我的ipsec输出,但我认为问题的一部分是内核:

代码语言:javascript
复制
Sep 18 04:36:45 shiftmy ipsec_setup: Starting Openswan IPsec 2.6.41...
Sep 18 04:36:45 shiftmy ipsec_setup: Using NETKEY(XFRM) stack
Sep 18 04:36:45 shiftmy ipsec_setup: multiple ip addresses, using  127.0.0.2 on venet0
Sep 18 04:36:45 shiftmy ipsec_setup: ...Openswan IPsec started
Sep 18 04:36:45 shiftmy ipsec__plutorun: adjusting ipsec.d to /etc/ipsec.d
Sep 18 04:36:45 shiftmy pluto: adjusting ipsec.d to /etc/ipsec.d
Sep 18 04:36:45 shiftmy ipsec__plutorun: 002 added connection description "L2TP-PSK-noNAT"
Sep 18 04:36:45 shiftmy ipsec__plutorun: 003 no public interfaces found

这里是我的接口文件,我在某个地方看到ipsec绑定到接口列表中第一个默认接口的地方。在本例中,venet0 127.0.0.2当公共IP处于venet0 0:0 107.161.xx.xx (不确定这是否是问题所在)时,我的VPS提供程序接口文件被锁定,因此我无法修改该部分,我相信所有通信量都从107.161.xx.xx到连接到openvz主机的AK网关的127.0.0.2。

代码语言:javascript
复制
root@shiftmy:/etc/network# cat /etc/network/interfaces
# This configuration file is auto-generated.
#
# WARNING: Do not edit this file, your changes will be lost.
# Please create/edit /etc/network/interfaces.head and
# /etc/network/interfaces.tail instead, their contents will be
# inserted at the beginning and at the end of this file, respectively.
#
# NOTE: it is NOT guaranteed that the contents of /etc/network/interfaces.tail
# will be at the very end of this file.
#

# Auto generated lo interface
auto lo
iface lo inet loopback

# Auto generated venet0 interface
auto venet0
iface venet0 inet manual
        up ifconfig venet0 up
        up ifconfig venet0 127.0.0.2
        up route add default dev venet0
        down route del default dev venet0
        down ifconfig venet0 down


iface venet0 inet6 manual
        up route -A inet6 add default dev venet0
        down route -A inet6 del default dev venet0

auto venet0:0
iface venet0:0 inet static
        address 107.161.xx.xx
        netmask 255.255.255.255

我一直在网上搜索"ipsec__plutorun: 003没有找到公共接口“的问题,也找不到多少帮助。不确定这是否是真正的问题,因为我相信我设置的接口是正确的。

ipsec验证也失败:

代码语言:javascript
复制
Version check and ipsec on-path                         [OK]
Openswan U2.6.41/K(no kernel code presently loaded)
See `ipsec --copyright' for copyright information.
Checking for IPsec support in kernel                    [FAILED]

 The ipsec service should be started before running 'ipsec verify'

Hardware random device check                            [N/A]
Two or more interfaces found, checking IP forwarding    [OK]
Checking rp_filter                                      [ENABLED]
 /proc/sys/net/ipv4/conf/all/rp_filter                  [ENABLED]
Checking that pluto is running                          [OK]
 Pluto listening for IKE on udp 500                     [FAILED]
 Pluto listening for IKE on tcp 500                     [NOT IMPLEMENTED]
 Pluto listening for IKE/NAT-T on udp 4500              [DISABLED]
 Pluto listening for IKE/NAT-T on tcp 4500              [NOT IMPLEMENTED]
 Pluto listening for IKE on tcp 10000 (cisco)           [NOT IMPLEMENTED]
Checking NAT and MASQUERADEing                          [TEST INCOMPLETE]
Checking 'ip' command                                   [OK]
Checking 'iptables' command                             [OK]

ipsec verify: encountered errors

我已经读过,如果ipsec没有正确启动,并且在检查表的某些部分显示错误故障,它可能会失败。IPsec似乎在“运行”,我不确定内核支持是否真的不存在,或者这是否是一个错误的失败?也不知道如何修复冥王星的故障。

我遵循了各种指南,似乎无法解决这一问题。

ipsec配置:

代码语言:javascript
复制
root@shiftmy:/etc/network# cat /etc/ipsec.conf
version 2.0     # conforms to second version of ipsec.conf specification

config setup
        interfaces=%defaultroute
        dumpdir=/var/run/pluto/
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
        oe=off
        protostack=auto
        protostack=netkey
        force_keepalive=yes
        keep_alive=60

conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        ikelifetime=8h
        keylife=1h
        ike=aes256-sha1;modp1024!
        phase2alg=aes256-sha1;modp1024
        type=transport
        left=107.161.xx.xx
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
        dpddelay=10
        dpdtimeout=20
        dpdaction=clear

ipsec秘密:

代码语言:javascript
复制
root@shiftmy:/etc/network# cat /etc/ipsec.secrets
107.161.xx.xx %any: PSK "<key here>"
#include /var/lib/openswan/ipsec.secrets.inc
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2014-09-19 23:02:40

最终的答案是,openVZ VPS提供者必须有一个支持ipsec的内核,并且必须在主机上启用ipsec模块。我们的一些供应商不会这么做,因为这对主机来说是一个很大的改变。相反,我们发现我们的所有提供者都支持openvpn协议,并且我们在所有openvz VPS上都启用了“tun”。

票数 0
EN

Unix & Linux用户

发布于 2016-03-15 20:56:52

我遇到了一个类似的问题,试图让openswan/ipsec/pluto在一个Docker容器中工作。使用完全相同的基本配置,它可以在VirtualBox Ubuntu14.04虚拟机上工作。

我遇到的问题是在我的主机Arch机器上运行一个带有Docker的Ubuntu14.04映像。

我相信问题的实质是这条线:

代码语言:javascript
复制
pluto[439]: no public interfaces found

要真正深入研究这个问题,我必须访问源代码:

代码语言:javascript
复制
apt-get source openswan

它可以追溯到这里的源代码:

代码语言:javascript
复制
    openswan-2.6.38/programs/pluto/server.c:462:find_ifaces(void)                         
    openswan-2.6.38/programs/pluto/sysdep_bsd.c:201: find_raw_ifaces4(void)               
    openswan-2.6.38/programs/pluto/server.c:477:loglog(RC_LOG_SERIOUS, "no public interfaces found");

而在VirtualBox Ubuntu14.04上,它可以找到eth0及其地址。

在本质上,可能是这段代码没有返回任何接口:

代码语言:javascript
复制
    openswan-2.6.38/programs/pluto/sysdep_bsd.c:243: find_raw_ifaces4() : if (ioctl(master_sock, SIOCGIFCONF, &ifconf) == -1)

因此,为了解决这个问题,我发现Docker限制了对网络设备的访问(默认情况下它创建了到主机的桥梁)和加载/卸载内核模块(ipsec加载和卸载内核模块)。因此,我不得不允许Docker访问所有东西,包括使用我的主机的原始网络接口:

代码语言:javascript
复制
docker run --cap-add=ALL --net=host -it ubuntu /bin/bash

尽管这不是一个完整的问题的答案,希望它将引导其他人找到他们自己的配置的问题所在。理想情况下,冥王星将提供更多信息,说明它发现了哪些网络设备,以及另一个设备不合适的原因(即不公开)。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/156139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档