搜索IPSec和Linux不可避免地会遇到不同的解决方案(见下文),这些解决方案看起来都非常相似。问题是:区别在哪里?
我找到了这些项目。它们都是开源的,都是活跃的(在过去 3 个月内发布)并且它们似乎都提供了非常相似的东西。
另外:还有其他我没有遇到的项目吗?
(strongswan vs openswan要求相同,但显然已经过时了。)
问题:对于某些要求/上下文是否有明显的选择,或者它们都可以互换?
不确定性示例:是否需要支持某些客户端(android、apple、Microsoft 等)需要(或从中受益匪浅)特定实现?
示例不确定性:某些实现是否比其他实现更多地进行了安全性、和-或兼容性、和-或性能的审查和测试?
不确定性示例:某些实现是否比其他实现更稳定且没有错误?
示例不确定性:它们是否都支持 1pv4-only / ipv6-only / 任何一个 / 两者?
示例不确定性:它们是否都支持多个客户端和 dhcp ?
示例不确定性:它们是否都支持相同的身份验证方法?
背景
我现在有一个可用的 OpenVPN 设置,用户可以在其中将家里的专用网络与他们的计算机连接起来。
然而,大多数手机只支持 IPSec,所以我想为带有 IPSec 的手机提供与我为带有 OpenVPN 的计算机所做的相同的服务。
问题
我找不到任何描述如何配置 OpenSWAN 以向客户端提供私有 IP 的教程。
使用我的 OpenVPN,客户端必须提供密钥和密码才能访问。
题
可以将 OpenSWAN 配置为向客户端提供私有 IP,类似于我的 OpenVPN 设置吗?
OpenVPN 配置
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/secrets/server.crt
key /etc/openvpn/secrets/server.key
dh /etc/openvpn/secrets/dh1024.pem
server 192.168.240.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.10.64.0 255.255.252.0"
push "dhcp-option DNS xxx.xxx.xxx.xxx"
duplicate-cn
keepalive 10 120
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 4
mute 20
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf"
script-security 2
auth-user-pass-verify /etc/openvpn/scripts/check_cn_on_connect.sh …Run Code Online (Sandbox Code Playgroud) 我很难在我的 Linux 服务器(Ubuntu 12.04)上配置 OpenSWAN 以连接到 ISA Server 2004 IPSec VPN。阻碍隧道工作的配置显然有问题。看起来我的一些数据包在某处丢失了?我不确定。
对方说他们这边的日志没有任何问题。我这边没有防火墙。这是/var/log/auth.log(下面的更长版本)中的违规部分。
Jan 29 17:28:11 P-INV-SD07 pluto[5821]: "myconn" #1: transition from state STATE_MAIN_I2 to state STATE_MAIN_I3
Jan 29 17:28:11 P-INV-SD07 pluto[5821]: "myconn" #1: STATE_MAIN_I3: sent MI3, expecting MR3
Jan 29 17:28:12 P-INV-SD07 pluto[5821]: "myconn" #1: discarding duplicate packet; already STATE_MAIN_I3
Jan 29 17:28:34 pluto[5821]: last message repeated 3 times
Jan 29 17:28:42 P-INV-SD07 pluto[5821]: packet from <hispublicip>:500: Informational Exchange is for an unknown (expired?) SA with MSGID:0x8341092b …Run Code Online (Sandbox Code Playgroud) 尝试在 Amazon VPC 集群中设置基于 openswan 的服务器。目标是让我们可以通过 VPN 连接到 VPC 并使我们的工作站就像在网络上一样,更像是一种公路战士配置。
我们选择的 VPN 客户端是适用于 Mac OS X 的Equinux VPN Tracker ( http://equinux.com/us/products/vpntracker/ )。我们已经使用它通过基于硬件的 VPN 连接到我们现有的网络,并希望继续使用它连接到我们的 VPC 网络。
到目前为止,我已经将它设置为可以成功连接到在 VPC 中运行的 openswan 服务器,但是我只能 ping openswan 服务器的内部 IP。我无法与网络上的其他任何内容交谈。我可以运行 tcpdump 并看到 ping 请求出现,但是它们从未到达其他主机。
我的第一个想法是它与只有一个网络接口的 EC2 实例有关,但是我之前设置了 OpenVPN 连接没有问题,尽管它们通常使用隧道设备,我还没有真正找到一个例子带有隧道或单个接口的 openswan。
任何帮助将不胜感激。
一些配置:
VPC Subnet: 10.10.1.0/24
VPC Gateweay: 10.10.1.1
Openswan Private IP: 10.10.1.11
Openswan Public IP: xxx.xxx.xxx.xxx
Run Code Online (Sandbox Code Playgroud)
Openswan 配置:
version 2.0
config setup
interfaces=%defaultroute
klipsdebug=none
plutodebug=none
dumpdir=/var/log
nat_traversal=yes
virtual_private=%v4:10.10.1.0/24
conn vpntracker-psk
left=%any
leftsubnet=vhost:%no,%priv
right=10.10.1.11
rightid=xxx.xxx.xxx.xxx
rightsubnet=10.10.1.0/24 …Run Code Online (Sandbox Code Playgroud) 我想要做的是在我的网络和我朋友的网络之间创建一个站点到站点的 IPsec VPN。我们都有一个路由器和每个路由器上的两台计算机,所有计算机都运行 Linux。所以我想拓扑看起来像这样
[myPC1 + myPC2]---myRouter------互联网-----hisRouter---[hisPC1 + hisPC2]
这两款路由器都很便宜,所以它们没有像 OpenWRT 这样的东西。
所以配置——我想这应该在 Linux 的两边完成。
到目前为止,我们已经尝试过使用 RSA 密钥和 PSK 使用 openSwan,但是在命令之后
ipsec auto --up net-to-net
Run Code Online (Sandbox Code Playgroud)
我们要么得到错误“没有名为 net-to-net 的连接”或错误“我们无法在此连接的任何一端识别自己”。
我猜我们是错误地配置了 ipsec.conf 文件。有人能解释一下我们应该如何正确配置它来实现这种拓扑吗?
以下是一些可能有助于您更好地理解我的案例的事实。
这些都来自我们测试的 PSK 示例。
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 …Run Code Online (Sandbox Code Playgroud) 我正在我的 Centos 6.3 全新安装上通过 IPSec 设置 LT2p。
我有 iptables 刷新,允许所有。
每当我尝试连接时,我都会收到“vpn 没有回复”的消息,并且没有
这是我的 ipsec.conf 文件(服务器是 1.2.3.4):
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=1.2.3.4
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
Run Code Online (Sandbox Code Playgroud)
我的 /etc/ipsec.secrets
1.2.3.4 %any: PSK "password"
Run Code Online (Sandbox Code Playgroud)
我的 sysctl.conf(附加行)
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
Run Code Online (Sandbox Code Playgroud)
以下是“ipsec 验证”给出的内容: …
我按照各种 教程/文档在 Ubuntu 12.04 服务器(在 EC2 上)上配置了 openswan 和 xl2tpd,这些教程/文档似乎在很大程度上说的是相同的事情,但最近这个.
但是,我尝试从 Windows(我使用共享机密和用户名/密码配置)连接失败。日志表明已建立 IPsec 隧道,但没有任何反应。
以下是数据包转储和日志活动(系统日志中没有发生任何事情,因此没有 iptables 日志消息):
$ sudo tcpdump -n host 64.236.139.254 and not port 22
21:00:49.843198 IP 64.236.139.254.26712 > 10.252.60.213.500: isakmp: phase 1 I ident
21:00:49.844815 IP 10.252.60.213.500 > 64.236.139.254.26712: isakmp: phase 1 R ident
21:00:49.928882 IP 64.236.139.254.26712 > 10.252.60.213.500: isakmp: phase 1 I ident
21:00:49.930819 IP 10.252.60.213.500 > 64.236.139.254.26712: isakmp: phase 1 R ident
21:00:49.972728 IP …Run Code Online (Sandbox Code Playgroud) 我最近配置了一个托管在 AWS EC2 中的 VPN 服务器。详细信息:Centos 6.4、openswan、xl2tpd、NAT 穿越。当只有一个用户从 NAT 后面的给定公共 IP 地址连接时,该配置非常适用。但是当同一个 NAT 后面有多个客户端时,每个新的客户端连接都会丢弃旧的连接。查看日志我可以得出结论,l2tp 将来自同一个 nat 的所有连接视为一个。
我错过了什么吗?有解决办法吗?
非常感谢您的帮助。
这是我第一次尝试站点到站点 VPN。我选择使用 IPec 是因为它似乎是我需要完成的工作的最佳解决方案。上周我遵循了几个不同的教程,但收效甚微。现在,在 ping 对面子网时,我似乎无法成功执行 ping 操作。我知道我错过了一些东西,我只是不知道是什么。
我能说的最好,我应该在路由表中看到一些东西。现在,发往另一个子网的流量未经封装就出去,并被第一个接收到不可路由私有 IP 目的地的路由器丢弃。
我尝试将 MASQUERADE 和 RELATED,ESTABLISHED 规则添加到 iptables,认为可能会有所帮助。我最终冲淡了这个想法。现在 iptables 的默认策略是在两个 Ubuntu 机器上的所有链上都接受。当 IPsec 工作时我会调整一些东西。
IPsec running - pluto pid: 1059
pluto pid 1059
1 tunnels up
some eroutes exist
Run Code Online (Sandbox Code Playgroud)
version 2
config setup
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,%v6:fd00::/8,%v6:fe80::/10
protostack=netkey
force_keepalive=yes
keep_alive=60
conn site1-site2
leftsubnets=10.248.248.64/16
rightsubnet=10.131.250.194/16
auto=start
left=162.243.XXX.XXX
right=178.62.YYY.YYY
leftid=@site1
rightid=@site2
authby=secret
ike=aes128-sha1;modp1024
phase2=esp
phase2alg=aes128-sha1;modp1024
aggrmode=no
ikelifetime=8h
salifetime=1h
dpddelay=10
dpdtimeout=40
dpdaction=restart
type=tunnel
forceencaps=yes
Run Code Online (Sandbox Code Playgroud)
Checking …Run Code Online (Sandbox Code Playgroud) 我在 CentOS 6.7 上使用 OpenSwan IPSec 隧道。
我根据此链接添加了以下配置:http : //linux.die.net/man/5/ipsec.conf/etc/ipsec.secrets
config setup
plutodebug=all
plutostderrlog=/var/log/openswan.log
Run Code Online (Sandbox Code Playgroud)
不幸的是,我在 openswan.log 中看不到日志。
我错过了什么?
openswan ×10
ipsec ×9
vpn ×6
ubuntu ×3
centos ×2
linux ×2
amazon-vpc ×1
centos6 ×1
isa-server ×1
l2tp ×1
openvpn ×1
strongswan ×1
xl2tpd ×1