如何访问同时充当 VPN 网关的服务器上的服务?

如何访问同时充当 VPN 网关的服务器上的服务?

我目前正在 CentOS 6.5 VPS 上运行 Strongswan 的 VPN 网关。

CentOS服务器有一个eth端口。

VPN 使用 IKEv2,客户端和服务器之间的连接已建立。客户端被分配了从 10.0.0.0/24 池中提取的虚拟 IP。客户端也可以毫无问题地相互访问。但是我注意到,充当 VPN 网关的服务器本身没有虚拟 IP 地址。

我在 VPS 服务器上运行一些服务,希望通过 VPN 隧道保护这些服务。如果可能的话,我不会将它们直接暴露在互联网上。

所以我想知道是否有办法让连接的VPN客户端通过隧道访问充当VPN网关的服务器上的服务?提前谢谢您。

答案1

如果客户端将所有流量路由到服务器(即使用leftsubnet=0.0.0.0/0),您只需确保私有服务只能通过 VPN 访问。使用 strongSwan 可以很容易地实现这一点。只需在链上接受 IKE 和 IPsec 流量(可能还有 SSH 和您想要允许的其他协议)INPUT,然后将默认策略设置为DROP

# allow ESP
iptables -A INPUT -p 50 -j ACCEPT
# allow IKE
iptables -A INPUT -p udp --dport 500 -j ACCEPT
# allow NAT-T (IKE and ESP-in-UDP)
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
# allow SSH and other protocols
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
...
# drop packets by default
iptables -P INPUT DROP

然后配置leftfirewall=yeslefthostaccess=yes输入ipsec.conf,以便 strongSwan 自动插入允许您的 VPN 客户端访问服务器的规则。这些规则使用 iptables/Netfiler 的 IPsec 策略匹配模块 ( -m policy),因此它们仅适用于来自已建立的 IPsec 隧道的流量。

相关内容