我正在尝试连接到 FortiGate 并通过 IPsec VPN 隧道访问我们的持续集成服务器。
我无法控制 FortiGate 的配置。
在运行 Windows 10 的笔记本电脑上,我成功使用 FortiClient 访问位于 的集成服务器http://ourCIserver:8080
。
现在,我的另一台笔记本电脑运行 Arch Linux 4.14.15,我正在使用强天鹅5.6.1 建立IPsec隧道。
sudo ipsec restart
令人鼓舞的是,从 的最后一部分来看,隧道似乎是在调用 时建立的sudo ipsec statusall
:
Status of IKE charon daemon (strongSwan 5.6.1, Linux 4.14.15-1-ARCH, x86_64):
uptime: 8 seconds, since Feb 14 15:45:58 2018
malloc: sbrk 2789376, mmap 0, used 869600, free 1919776
worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 5
loaded plugins: <omitted>
Listening IP addresses:
10.0.0.1
Connections:
myConn: %any...vpn.the-vpn-server.com IKEv1 Aggressive, dpddelay=30s
myConn: local: [theuser] uses pre-shared key authentication
myConn: local: [theuser] uses XAuth authentication: any
myConn: remote: uses pre-shared key authentication
myConn: child: dynamic === 10.7.0.0/24 TUNNEL, dpdaction=clear
Shunted Connections:
Bypass LAN 10.0.0.0/24: 10.0.0.0/24 === 10.0.0.0/24 PASS
Bypass LAN ::1/128: ::1/128 === ::1/128 PASS
Bypass LAN fe80::/64: fe80::/64 === fe80::/64 PASS
Security Associations (1 up, 0 connecting):
myConn[1]: ESTABLISHED 7 seconds ago, 10.0.0.1[theuser]...83.xxx.xxx.xx[83.xxx.xxx.xx]
myConn[1]: IKEv1 SPIs: 9ecabd502184611d_i* 1e7f83412c3aa933_r, pre-shared key+XAuth reauthentication in 7 hours
myConn[1]: IKE proposal: <encryption-hash-diffie-hellman-group>
myConn{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cf636a4c_i 98552ddb_o
myConn{1}: <encryption-hash-diffie-hellman-group>, 0 bytes_i, 0 bytes_o, rekeying in 12 minutes
myConn{1}: 10.0.0.1/32 === 10.7.0.0/24
虽然连接已建立,但我无法连接到http://ourCIserver:8080
,这正是我想要实现的目标。
我怀疑我缺少iptables
DNS 中的某些配置。
说到 DNS,FortiClient (Windows) 的配置中有这部分我无法转换为以下格式/etc/ipsec.conf
:
<use_vip>1</use_vip>
<virtualip>
<type>dhcpoveripsec</type>
<ip>0.0.0.0</ip>
<mask>0.0.0.0</mask>
<dnsserver>0.0.0.0</dnsserver>
<winserver>0.0.0.0</winserver>
</virtualip>
系统配置
以下是我认为相关的系统配置;让我知道还有什么要发布的。
iptables-save
# Generated by iptables-save v1.6.1 on Wed Feb 14 16:31:09 2018
*filter
:INPUT ACCEPT [5889:5448467]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4843:436153]
-A INPUT -s 10.7.0.0/24 -d 10.0.0.1/32 -i wlp3s0 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT
-A OUTPUT -s 10.0.0.1/32 -d 10.7.0.0/24 -o wlp3s0 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT
COMMIT
# Completed on Wed Feb 14 16:31:09 2018
ip route
default via 10.0.0.138 dev wlp3s0 src 10.0.0.1 metric 303
10.0.0.0/24 dev wlp3s0 proto kernel scope link src 10.0.0.1 metric 303
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:1e:33:a8:53:c6 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 00:22:fa:91:3e:02 brd ff:ff:ff:ff:ff:ff
sudo ip xfrm policy
src 10.0.0.1/32 dst 10.7.0.0/24
dir out priority 371327
tmpl src 10.0.0.1 dst 83.xxx.xxx.xx
proto esp spi 0x98552dde reqid 1 mode tunnel
src 10.7.0.0/24 dst 10.0.0.1/32
dir fwd priority 371327
tmpl src 83.xxx.xxx.xx dst 10.0.0.1
proto esp reqid 1 mode tunnel
src 10.7.0.0/24 dst 10.0.0.1/32
dir in priority 371327
tmpl src 83.xxx.xxx.xx dst 10.0.0.1
proto esp reqid 1 mode tunnel
src fe80::/64 dst fe80::/64
dir fwd priority 134463
src fe80::/64 dst fe80::/64
dir in priority 134463
src fe80::/64 dst fe80::/64
dir out priority 134463
src ::1/128 dst ::1/128
dir fwd priority 68927
src ::1/128 dst ::1/128
dir in priority 68927
src ::1/128 dst ::1/128
dir out priority 68927
src 10.0.0.0/24 dst 10.0.0.0/24
dir fwd priority 175423
src 10.0.0.0/24 dst 10.0.0.0/24
dir in priority 175423
src 10.0.0.0/24 dst 10.0.0.0/24
dir out priority 175423
src 0.0.0.0/0 dst 0.0.0.0/0
socket in priority 0
src 0.0.0.0/0 dst 0.0.0.0/0
socket out priority 0
src 0.0.0.0/0 dst 0.0.0.0/0
socket in priority 0
src 0.0.0.0/0 dst 0.0.0.0/0
socket out priority 0
src ::/0 dst ::/0
socket in priority 0
src ::/0 dst ::/0
socket out priority 0
src ::/0 dst ::/0
socket in priority 0
src ::/0 dst ::/0
socket out priority 0
/etc/ipsec.conf
config setup
charondebug = "dmn 1, mgr 1, ike 2, chd 1, job 1, cfg 3, knl 2, net 2, enc 1, lib 1"
conn myConn
keyexchange = ikev1
ike = <encryption-hash-diffie-hellman-group>
esp = <encryption-hash-diffie-hellman-group>
aggressive = yes
ikelifetime = 28800s
right = 83.xxx.xxx.xx
#right = vpn.the-vpn-server.com
rightsubnet = 10.7.0.0/24
rightid = %any
rightauth = psk
rightdns = 0.0.0.0,8.8.8.8,8.8.4.4
left = %defaultroute
leftauth = psk
leftauth2 = xauth
xauth_identity = "theuser"
auto = start
/etc/ipsec.secrets
# ipsec.secrets - strongSwan IPsec secrets file
: PSK "secret_preshared_key"
: XAUTH "secret_xauth_password"
无需 DNS 即可连接✔️
根据用户 roaima 的建议,我通过 IP 地址联系了 CI 服务器:http://10.7.0.50:8080/
从以下位置删除这部分后,无 DNS 工作就成功了/etc/ipsec.conf
:
lifebytes = 5120
lifebytes
使安全关联在传输一定数量的字节后过期。在我的情况下,客户端和服务器无法重新连接。
在日志中,由导致的过期lifebytes
显示为
[KNL] received a XFRM_MSG_EXPIRE
我现在可以通过下载 CI 服务器仪表板的 HTML wget -O- --header 'Host: ourCIserver' 10.7.0.50:8080/
。
更有用的是,Firefox 可以使用 IP 地址连接到 CI 服务器并呈现该 HTML。
这意味着连接现在可以工作并允许 HTTP 流量,这是个好消息。
与 DNS 连接
我添加了
rightdns = 0.0.0.0,8.8.8.8,8.8.4.4
但失败/etc/ipsec.conf
了ping ourCIserver
Name or service not known
还没有运气traceroute ourCIserver
ourCIserver: Name or service not known
Cannot handle "host" cmdline arg `ourCIserver' on position 1 (argc 1)
这是 Windows 上 FortiClient 的 DNS 相关配置,其中 DNS 起作用:
<virtualip>
<type>dhcpoveripsec</type>
<ip>0.0.0.0</ip>
<mask>0.0.0.0</mask>
<dnsserver>0.0.0.0</dnsserver>
<winserver>0.0.0.0</winserver>
</virtualip>
我可以通过在 中提供 IP/主机映射来解决 DNS 问题/etc/hosts
,但当然最好使用隧道另一端的服务器来获取 DNS。
#<ip-address> <hostname.domain.org> <hostname>
10.7.0.50 ourCIserver ourCIserver
结论
我可以使用/etc/ipsec.conf
上面的内容连接到 VPN。 DNS 不起作用,但对我来说没关系。
我已经蒸馏了一个答案从这些努力中,对于那些想要使用 StrongSwan 连接到 FortiGate 的人来说。
答案1
我有写博客当我最后需要它的时候。主要技巧是 Fortinet 需要激进模式,因此配置参数需要从一开始就紧密匹配。
作为参考,我的配置是
conn fortinet
left=%any
leftauth=psk
leftid=""
leftauth2=xauth
xauth_identity="your username"
leftsourceip=%config
right=gateway IP address
rightsubnet=VPN subnet
rightauth=psk
keyexchange=ikev1
aggressive=yes
ike=aes128-sha1-modp1536!
esp=aes128-sha1-modp1536!
auto=add
您还需要配置 PSK 和 XAUTH 密钥。
这是 2016 年,因此 ike 和 esp 模式可能已更新为使用更长的密钥 - 请注意,我为每个模式强制执行特定的密码。