+----------+
+-------+ Client 1 |
+--------------+ +---------------+ +----------+ +------------+ | +----------+
| Web Server +-------------+ Cisco ASA5585 +---------+ Internet +-----------+ StrongSwan +--------+ IP: 10.2.0.1
+--------------+ +---------------+ +----------+ +------------+ |
| +----------+
+-------+ Client 2 |
Internal Web server External IP: 1.1.1.1 External IP: 2.2.2.2 +----------+
https://some.webservice.net Internal IP: 10.1.0.1 IP: 10.3.0.1
192.168.0.1:443
客户端 1 和 2 位于不同的 /20 子网中,需要通过 StrongSwan 服务器和远程 Cisco ASA 设备之间的主机到主机 IPSEC VPN 隧道访问远端的内部 Web 服务器。
我们对远程端没有任何控制权。
我们已经设置了路由,以允许客户端 1 和客户端 2 到达 StrongSwan 服务器。
我们已经在 StrongSwan 服务器和 Cisco ASA 设备之间建立了隧道。
我们在 StrongSwan 服务器上启用了 IP 转发。
我试图找出是否可以使用 iptunnel 将客户端 1 和 2 伪装成 StrongSwan 服务器本身,以允许它们访问隧道远端的内部 Web 服务器。
答案1
从 StrongSwan 机器连接到 Web 服务器的简单方法是安装一个代理squid
并从客户端使用它,而不是直接连接到 Web 服务器。
根据客户端想要在 Web 服务器上访问的资源类型,功能齐全的 squid 可能有点过头了。如果只有端口 443,并且您不需要在 StronSwan 上使用端口 443 用于其他目的,则可以在 StrongSwan 上使用redirect
选项xinetd
。这将使客户端中的 etc/hosts 条目成为必需,否则 Web 服务器的证书将因明显的名称不匹配而被拒绝。除了 xinetd 重定向之外,还有其他 TCP 代理,但您明白我的意思。
答案2
您可以通过iptables
在 StrongSwan 框上进行配置来执行此操作。
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
假设 eth0 是你的出口以太网(以太网到互联网)