我的服务器是 Ubuntu 20.04,并且安装并使用 Strongswan 运行 IKEv2 VPN。
我有一个 php 系统(与 VPN 安装在同一台服务器上),它被 IP 锁定。所以我使用我的 VPN 通过我的 IP 进入。(是的,我添加了 VPN 本地地址)
问题是它$_SERVER['REMOTE_ADDR']
没有显示我的 VPN IP,但显示了我的移动运营商 IP。好像我是否使用 VPN 都无关紧要。
我真的不知道哪里出了问题。我尝试删除 DNS,但这样 VPN 就无法正常工作。有人知道如何解决这个问题吗?
这是 ipsec.conf:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
ike=aes256-sha1-modp1024,3des-sha1-modp1024!
esp=aes256-sha1,3des-sha1!
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
[email protected]
leftsubnet=0.0.0.0/0
#leftauth=eap
#eap_identity=username
right=%any
rightid=%any
rightdns=8.8.8.8,8.8.4.4
rightsourceip=10.10.10.0/24
authby=secret
答案1
即使所有流量都配置为通过隧道传输( 的目标leftsubnet=0.0.0.0/0
),某些客户端也无法通过 VPN 连接到 VPN 服务器的公共 IP 地址。Apple 客户端(在您的情况下是 iOS)就是其中之一。
因此,要连接到服务器,您必须为其分配一个额外的 IP 地址并连接到该地址。这可以是第二个公共 IP 地址或任意虚拟 IP 地址。例如,您可以分配10.10.10.1
给服务器的lo
接口,然后将其10.10.10.2
作为第一个虚拟 IP 分配给客户端(即 rightsourceip=10.10.10.2/24
)。
确保不要将来自服务器虚拟 IP 的流量通过 NAT 发回客户端,例如通过插入以下规则(如果您遵循转发和拆分隧道在 strongSwan wiki 页面上,您可能已经有了这个或类似的规则):
iptables -t nat -I POSTROUTING -m policy --pol ipsec --dir out -j ACCEPT