linux – IPsec VPN站点到站点:如何在两个站点上配置ipsec.conf文件以启动隧道?

我想要做的是在我的网络和我朋友的网络之间创建一个站点到站点的IPsec VPN.我们在每台路由器上都有一台路由器和两台计算机,所有计算机都运行 Linux.所以我猜拓扑看起来像这样

[myPC1 myPC2] — myRouter —— internet —– hisRouter — [hisPC1 hisPC2]

两个路由器都很便宜,因此它们没有像OpenWRT那样的东西.

所以配置 – 我想这应该在Linux的双方都完成.

到目前为止,我们已尝试使用带有RSA密钥和PSK的openSwan但是在命令之后

ipsec auto --up net-to-net

我们要么得到错误“没有连接名为net-to-net”或错误“我们无法识别自己与此连接的任何一端.”

我想我们正在配置错误的ipsec.conf文件.有人可以解释我们应该如何正确配置它来实现这种拓扑吗?

编辑…

以下是一些可以帮助您更好地理解我的案例的事实.
这些都来自我们测试的PSK示例.

我的ifconfig:

eth0 Link encap:Ethernet HWaddr 00:0C:29:1B:F5:1C
inet addr:192.168.1.78 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe1b:f51c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:829 errors:0 dropped:0 overruns:0 frame:0
TX packets:704 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1213737 (1.1 MiB) TX bytes:57876 (56.5 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:53 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3664 (3.5 KiB) TX bytes:3664 (3.5 KiB)

他的ifconfig

Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:240 (240.0 b) TX bytes:240 (240.0 b)

p2p1 Link encap:Ethernet HWaddr 08:00:27:2A:F1:F5
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe2a:f1f5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21104 errors:0 dropped:0 overruns:0 frame:0
TX packets:12458 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16079321 (15.3 MiB) TX bytes:1012204 (988.4 KiB)

在ipsec.conf文件中,我们都使用完全相同的文件,我们也将它放在/etc/init.d中

version 2.0    
config setup    
    protostack=netkey    
    nat_traversal=yes    
    #virtual_private=    
    oe=off    

conn net-to-net  
    authby=secret                # Key exchange method  

    left=212.251.112.115         # Public Internet IP address of the
    leftsubnet=10.0.2.0/24       # Subnet protected by the LEFT VPN device  
    leftnexthop=%defaultroute    # correct in many situations  

    right=79.103.7.114           # Public Internet IP address of
    rightsubnet=192.168.1.0/24   # Subnet protected by the RIGHT VPN device  
    rightnexthop=%defaultroute   # correct in many situations

    auto=start                   # authorizes and starts this connection

我们也使用了完全相同的ipsec.secrets,我们都放在/etc/init.d中

212.251.112.115 79.103.7.114 : PSK "123"

我们用curl ifconfig.me获得了这些IP
完成配置后,我们运行:

service ipsec restart  
ipsec verify

我们在send_redirects中收到了相同的失败消息,拒绝更改为0

Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.37/K3.1.0-7.fc16.x86_64 (netkey)
Checking for IPsec support in kernel                            [OK]
 SAref kernel support                                           [N/A]
 NETKEY:  Testing XFRM related proc values                      [FAILED]

  Please disable /proc/sys/net/ipv4/conf/*/send_redirects
  or NETKEY will cause the sending of bogus ICMP redirects!

    [FAILED]

  Please disable /proc/sys/net/ipv4/conf/*/accept_redirects
  or NETKEY will accept bogus ICMP redirects!

    [OK]
Checking that pluto is running                                  [OK]
 Pluto listening for IKE on udp 500                             [OK]
 Pluto listening for NAT-T on udp 4500                          [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [OK]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]

然后我们继续

ipsec auto --up net-to-net

我们都得到了

022 "net-to-net": We cannot identify ourselves with either end of this connection.

我不知道它是否有帮助,也许你已经注意到了什么是错的,但这是最后一件事,ipsec的状态:

ipsec auto --status
000 using kernel interface: netkey
000 interface lo/lo ::1
000 interface lo/lo 127.0.0.1
000 interface lo/lo 127.0.0.1
000 interface eth0/eth0 192.168.1.78
000 interface eth0/eth0 192.168.1.78
000 %myid = (none)
000 debug none
000 
000 virtual_private (%priv):
000 - allowed 0 subnets: 
000 - disallowed 0 subnets: 
000 WARNING: Either virtual_private= is not specified,or there is a syntax 
000          error in that line. 'left/rightsubnet=vhost:%priv' will not work!
000 WARNING: Disallowed subnets in virtual_private= is empty. If you have 
000          private address space in internal use,it should be excluded!
000 
000 algorithm ESP encrypt: id=2,name=ESP_DES,ivlen=8,keysizemin=64,keysizemax=64
000 algorithm ESP encrypt: id=3,name=ESP_3DES,keysizemin=192,keysizemax=192
000 algorithm ESP encrypt: id=6,name=ESP_CAST,keysizemin=40,keysizemax=128
000 algorithm ESP encrypt: id=7,name=ESP_BLOWFISH,keysizemax=448
000 algorithm ESP encrypt: id=11,name=ESP_NULL,ivlen=0,keysizemin=0,keysizemax=0
000 algorithm ESP encrypt: id=12,name=ESP_AES,keysizemin=128,keysizemax=256
000 algorithm ESP encrypt: id=13,name=ESP_AES_CTR,keysizemin=160,keysizemax=288
000 algorithm ESP encrypt: id=14,name=ESP_AES_CCM_A,keysizemax=256
000 algorithm ESP encrypt: id=15,name=ESP_AES_CCM_B,keysizemax=256
000 algorithm ESP encrypt: id=16,name=ESP_AES_CCM_C,keysizemax=256
000 algorithm ESP encrypt: id=18,name=ESP_AES_GCM_A,keysizemax=256
000 algorithm ESP encrypt: id=19,name=ESP_AES_GCM_B,keysizemax=256
000 algorithm ESP encrypt: id=20,name=ESP_AES_GCM_C,keysizemax=256
000 algorithm ESP encrypt: id=22,name=ESP_CAMELLIA,keysizemax=256
000 algorithm ESP encrypt: id=252,name=ESP_SERPENT,keysizemax=256
000 algorithm ESP encrypt: id=253,name=ESP_TWOFISH,keysizemax=256
000 algorithm ESP auth attr: id=1,name=AUTH_ALGORITHM_HMAC_MD5,keysizemax=128
000 algorithm ESP auth attr: id=2,name=AUTH_ALGORITHM_HMAC_SHA1,keysizemax=160
000 algorithm ESP auth attr: id=5,name=AUTH_ALGORITHM_HMAC_SHA2_256,keysizemin=256,keysizemax=256
000 algorithm ESP auth attr: id=6,name=AUTH_ALGORITHM_HMAC_SHA2_384,keysizemin=384,keysizemax=384
000 algorithm ESP auth attr: id=7,name=AUTH_ALGORITHM_HMAC_SHA2_512,keysizemin=512,keysizemax=512
000 algorithm ESP auth attr: id=8,name=AUTH_ALGORITHM_HMAC_RIPEMD,keysizemax=160
000 algorithm ESP auth attr: id=9,name=AUTH_ALGORITHM_AES_CBC,keysizemax=128
000 algorithm ESP auth attr: id=251,name=(null),keysizemax=0
000 
000 algorithm IKE encrypt: id=0,blocksize=16,keydeflen=131
000 algorithm IKE encrypt: id=5,name=OAKLEY_3DES_CBC,blocksize=8,keydeflen=192
000 algorithm IKE encrypt: id=7,name=OAKLEY_AES_CBC,keydeflen=128
000 algorithm IKE hash: id=1,name=OAKLEY_MD5,hashsize=16
000 algorithm IKE hash: id=2,name=OAKLEY_SHA1,hashsize=20
000 algorithm IKE dh group: id=2,name=OAKLEY_GROUP_MODP1024,bits=1024
000 algorithm IKE dh group: id=5,name=OAKLEY_GROUP_MODP1536,bits=1536
000 algorithm IKE dh group: id=14,name=OAKLEY_GROUP_MODP2048,bits=2048
000 algorithm IKE dh group: id=15,name=OAKLEY_GROUP_MODP3072,bits=3072
000 algorithm IKE dh group: id=16,name=OAKLEY_GROUP_MODP4096,bits=4096
000 algorithm IKE dh group: id=17,name=OAKLEY_GROUP_MODP6144,bits=6144
000 algorithm IKE dh group: id=18,name=OAKLEY_GROUP_MODP8192,bits=8192
000 algorithm IKE dh group: id=22,name=OAKLEY_GROUP_DH22,bits=1024
000 algorithm IKE dh group: id=23,name=OAKLEY_GROUP_DH23,bits=2048
000 algorithm IKE dh group: id=24,name=OAKLEY_GROUP_DH24,bits=2048
000 
000 stats db_ops: {curr_cnt,total_cnt,maxsz} :context={0,0} trans={0,0} attrs={0,0} 
000 
000 "net-to-net": 10.0.2.0/24===212.251.112.115<212.251.112.115>[+S=C]---192.168.1.254...192.168.1.254---79.103.7.114<79.103.7.114>[+S=C]===192.168.1.0/24; unrouted; eroute owner: #0
000 "net-to-net":     myip=unset; hisip=unset;
000 "net-to-net":   ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0
000 "net-to-net":   policy: PSK+ENCRYPT+TUNNEL+PFS+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD; prio: 24,24; interface: ; 
000 "net-to-net":   newest ISAKMP SA: #0; newest IPsec SA: #0;

还有一个问题是,如果有必要,NETKEY [失败]问题是如何解决的!

解决方法

我的话,你确实已经完成了你的工作.好;这是一个大纲的入门读物,因为目前你的基本原理错误,细节无关紧要.

在其他任何事情之前,你没有为每个互联网连接获得静态公共地址的事实是一个问题. IPSec在这种配置中不容易支持隧道[1],因此每当你的任何一个地址发生变化时,你最终都会编辑你的ipsec.conf.好?

现在,当我问你每个OpenSWAN端点是否有一个公共IP地址,并且你自信地说“是”时,事实证明 – 我怀疑 – 你错了.您的ifconfig输出显示一端的地址为192.168.1.78,另一端的地址为10.0.2.15.您还告诉我,一端(当前)位于公共IP地址212.251.112.115之后,另一端位于79.103.7.114之后.你不说哪个是哪个,所以我假设192.168.1.78落后于212.251.112.115而10.0.2.15落后于79.103.7.114.如果这是错的,只需反转通信.我还会把前一对称为左对,后一对称为右对.它没有区别,但它会帮助我们保持思维直接,这对于现在来说是一个非常好的主意.

您需要在两端设置公共路由器,以将UDP / 500和协议50和51(仅用于完整性)转发到每个公共地址内的OpenSWAN端点.如果您无法管理两个协议穿透,那么也可以在NAT遍历上调查doco并转发UDP / 4500.

首先,要求每个端在配置中找到自己的IP地址,这样每个端都可以知道它在启动时的左侧和右侧.所以左边需要有一个包含的ipsec.conf

conn net-to-net  
    authby=secret
    left=192.168.1.78
    leftsubnet=192.168.1.0/24
    leftnexthop=%defaultroute
    right=79.103.7.114
    rightsubnet=10.0.2.0/24

和一个ipsec.secrets说

192.168.1.78 79.103.7.114: PSK "123"

右边必须有一个包含的ipsec.conf

conn net-to-net  
    authby=secret
    left=212.251.112.115
    leftsubnet=192.168.1.0/24
    right=10.0.2.15
    rightsubnet=10.0.2.0/24 
    rightnexthop=%defaultroute

和一个ipsec.secrets说

10.0.2.15 212.251.112.115: PSK "123"

每一端都需要知道它到底是谁,同时它可以假装它并不关心远程端是否在NAT后面.你有看到?

此外,您需要在每端配置所有客户端,以便它们通过本地OpenSWAN端点具有到远程RFC1918网络的路由.您需要检查每个端点上的/ proc / sys / net / ipv4 / ip_forward是否设置为1.至少就目前而言,关闭两个端点上的任何防火墙是一个非常好的主意.您可能还需要激活一些配置变量,这些变量告诉每个端点不要关心远程端点认为它具有与本地端点认为的IP地址不同的IP地址;从内存来看,这些都是leftid =和rightid =,但是你必须为自己解决这个问题.

这就是基础知识.如果您获得了基本的拓扑和概念,那么其余的只是调试细节.祝你好运.

[1]这不完全正确. SWAN实现支持机会主义IPSec加密,但这要求您在两端控制反向DNS,而我猜你没有.如果您想了解更多相关信息,请再次阅读手册页.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限!!!粘滞位!!!超详解!!!
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Windows、Linux、MacBook_mack book 安装qt
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Linux——了解操作系统的发展历史以及初次体验Linux编程环境
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,个人学习时很认真的记录的,觉得好的麻烦点个赞。
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)_openssh_9.5p1
文章浏览阅读3.5k次,点赞93次,收藏78次。初识Linux中的线程,理解线程的各种概念,理解进程地址空间中的页表转换,介绍pthread线程库并理解线程库!
文章浏览阅读863次。出现此问题为Linux文件权限问题,解决方案为回到引擎目录执行命令。输入用户密码后运行./UnrealEditor。_increasing per-process limit of core file size to infinity.
文章浏览阅读2.9k次。使用文本编辑器:打开CSV文件,并使用文本编辑器(如Notepad++、Sublime Text、Visual Studio Code等)来查看文件的字符编码格式。通常在编辑器的底部状态栏或设置中可以找到当前编码的显示。请注意,上述方法并非绝对准确,特别是当文件没有明确的编码标识时。因此,如果你发现CSV文件在不同的工具或方法中显示不同的编码格式,可能需要进行进一步的分析和判断,或者尝试使用不同的编码转换方法。该命令将输出文件的MIME类型和编码信息。使用命令行工具:在命令行中,你可以使用。_shell读取csv文件逐行处理
本文介绍了如何在Linux系统中升级gcc版本,以便更好地支持C++11及以上版本的新特性。通过升级gcc,可以提升编译器的功能和性能,获得更好的开发体验。详细的步骤和方法请参考原文链接。
文章浏览阅读4.4k次,点赞6次,收藏19次。Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单,可以方便的来进行一些测试。_linux mosquitto
文章浏览阅读7.2k次,点赞2次,收藏12次。Linux中,用于根目录下有一个.ssh目录,保存了ssh相关的key和一些记录文件。_~/.ssh/
文章浏览阅读4.5k次,点赞5次,收藏18次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具
文章浏览阅读3.5k次,点赞7次,收藏24次。本地部署和使用llama.cpp进行量化Llama2,linux和Windows平台方案,支持CPU和GPU多版本。_llama cpp gpu
文章浏览阅读1.4k次,点赞46次,收藏44次。在vim中,最为常见的有三种模式,分别是:命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode)文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+: 即可进入该模 式。在进入vim后,使用 i 进入插入模式,插入模式就是vim的编辑模式,可以在vim中进行内容的编辑和修改。vim的核心模式,使用vim进入文件编辑时的最初模式,在该模式中只能移动光标和使用命令对文件内容进行编辑。
Linux常用命令大全,包括目录操作命令和文件操作命令,以及查看登录用户命令和文件内容查看命令等。
文章浏览阅读1.7k次,点赞57次,收藏50次。Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用.本地部署,注重隐私,简单高效的MYSQL审计平台。下面介绍Linux 简单部署Yearning 并结合cpolar 内网穿透工具实现远程访问,破除访问限制,提高工作效率!!
文章浏览阅读1.9w次,点赞7次,收藏18次。Microsoft Edge是一款现代化的浏览器,它拥有众多功能和强大的性能,为用户带来更加流畅的浏览体验。Edge最近推出了分屏功能,支持一个窗口同时显示两个选项卡,这可以大大提高生产力和多任务处理能力。欢迎大家使用分屏及其他新功能后分享自己的使用心得与建议。首先,使用Microsoft Edge的分屏功能确实能够提高生产力,尤其是在需要同时浏览两个不同网页的情况下。分屏功能使得在一个窗口中同时显示两个选项卡,用户可以在两个网页之间快速切换,而无需打开新的窗口或使用多个浏览器窗口。_edge linux
文章浏览阅读1.8k次,点赞83次,收藏71次。C语言实现倒计时和进度条并进行演示。_linux不换行输出倒计时
文章浏览阅读1.5k次,点赞28次,收藏25次。基于嘉立创泰山派开发板,本机使用VMware+Unbuntu,编译泰山派的Linux SDK。详细教程,0基础小白可操作!内涵大量基础操作和linux基本知识。_立创泰山派sdk编译