我目前正在 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=yes
并lefthostaccess=yes
输入ipsec.conf
,以便 strongSwan 自动插入允许您的 VPN 客户端访问服务器的规则。这些规则使用 iptables/Netfiler 的 IPsec 策略匹配模块 ( -m policy
),因此它们仅适用于来自已建立的 IPsec 隧道的流量。