我正在尝试在 2 个 AWS 区域之间创建 VPN 隧道。我尝试这样做的方法是在 Linux 中设置一个 IPsec 服务器,在一个区域使用 strongSwan,然后在另一个区域设置一个 VPC VPN。
问题是我无法想出一个正确的配置。
AWS 提供以下用于设置 IPsec VPN 的信息:
#1: Internet Key Exchange Configuration
Configure the IKE SA as follows
- Authentication Method : Pre-Shared Key
- Pre-Shared Key : ***********************
- Authentication Algorithm : sha1
- Encryption Algorithm : aes-128-cbc
- Lifetime : 28800 seconds
- Phase 1 Negotiation Mode : main
- Perfect Forward Secrecy : Diffie-Hellman Group 2
#2: IPSec Configuration
Configure the IPSec SA as …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 的所有连接视为一个。
我错过了什么吗?有解决办法吗?
非常感谢您的帮助。
我正在使用 Strongswan 来处理 IPsec 连接,并且需要一种同时支持 Windows (IKEv2) 和 OS X (IKEv1) 客户端的方法。我宁愿使用纯 IPsec(即避免必须设置 L2TP),除非有令人信服的理由使用 L2TP/IPsec。
我知道你可以在 ipsec.conf 中配置 Strongswan 来让一些连接使用 IKEv1 而其他一些连接使用 IKEv2。但是,在我的情况下,我无法轻松地为每个用户设置单独的连接配置,因为他们将连接的 IP 地址不会提前知道。我只是为我们所有的用户使用单一的连接配置。
是否可以让一些用户通过 IKEv1 连接配置进行连接,而让其他用户通过 IKEv2 连接配置进行连接,或者设置一个可以同时处理 IKEv1 和 IKEv2 连接的连接配置?如果不是,那么支持 Windows 和 OS X 内置 IPsec 客户端(使用 Strongswan 或其他一些 IPsec 包)的最简单方法是什么?
我正在使用 IPSet 为不同国家/地区构建 IP 范围,如下所示:
# Canada
ipset -F ca.zone
ipset -N ca.zone nethash
for IP in $(wget -O - http://www.ipdeny.com/ipblocks/data/countries/ca.zone)
do ipset -A ca.zone $IP
echo $IP
done
Run Code Online (Sandbox Code Playgroud)
然后,我使用以下 iptables 规则从服务器上的某些端口阻止这些国家/地区:
iptables -A INPUT -m set --match-set fr.zone src -p tcp --dport 15765 -j DROP
iptables -A INPUT -m set --match-set cn.zone src -p tcp --dport 15765 -j DROP
iptables -A INPUT -m set --match-set ca.zone src -p tcp --dport 16247 -j DROP
iptables -A INPUT -m set --match-set …Run Code Online (Sandbox Code Playgroud) 在 IPsec 启动时应自动执行哪些操作(如果有)。add 加载连接而不启动它。route 加载连接并安装内核陷阱。如果在 leftsubnet 和 rightsubnet 之间检测到流量,则建立连接。start 加载连接并立即启动。ignore 忽略连接。这相当于从配置文件中删除一个连接。仅在本地相关,另一端无需同意。
加载连接而不启动它与立即启动它是什么意思?谁能提供一个简单的例子?
我已经使用创建客户端 VPN 端点中描述的步骤设置了客户端 VPN。
对于服务器证书,我选择了一个由 AWS Certificate Manager 新创建和验证的公共证书。
我将身份验证方法配置为使用Use Active Directory authentication与 AWS SimpleAD 目录对应的目录 ID。
我将传输协议设置为 UDP。
当我下载客户端配置并尝试通过 OSX 上的 Tunnelblick (v3.7.8) 进行连接时,出现以下错误:
VERIFY ERROR: depth=3, error=unable to get issuer certificate: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Services Root Certificate Authority - G2
OpenSSL: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
TLS_ERROR: BIO read tls_read_plaintext error
TLS Error: TLS object -> incoming plaintext read error
TLS Error: TLS handshake failed
Run Code Online (Sandbox Code Playgroud)
有什么想法没有正确配置或者我可以做些什么来解决这个问题?
首先解释一下我的网络拓扑。
我有一个内部域和边缘网络域。两个域之间不存在信任(并且 IT 不允许在内部和边缘网络域之间建立单向信任)

当通过路由器时,它会将流量 NAT 传输到边缘网络。因此,所有流量dmzHost.edgeNetwork.local看到的不是源自其自己的子网的流量看起来都将具有192.168.10.10. 有趣的是,当连接到 10.0.0.0/8 子网中的计算机时,来自 192.168.10.0/24 子网的任何流量都不会被 NAT(我向 IT 发送了一封电子邮件,询问为什么会这样,因为我不明白NAT到边缘网络,而是从边缘网络的开放接入。我可以看到背后的原因10.x -> 192.x = NAT和192.x -> 10.x = Dropped connection,但事实上,他们允许通过混淆了连接我)
我想要做的是禁用任何授权计算机的防火墙,以便它可以进行远程管理。我尝试做的方法是
Endpoint 1设置为192.168.10.40通过192.168.10.49(这将是一个 GPO 推送到多台计算机)Endpoint 2 被设定为 Any IP addressAnyRequest inbound and outboundAdvanced第一个身份验证方法设置为Preshared KeyEndpoint 1为Any IP addressEndpoint 2为192.168.10.40通过192.168.10.49 …我在 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 中看不到日志。
我错过了什么?
ipsec ×10
openswan ×4
strongswan ×3
vpn ×3
firewall ×2
networking ×2
amazon-ec2 ×1
centos ×1
centos6 ×1
iptables ×1
l2tp ×1
linux ×1
ubuntu ×1
xl2tpd ×1