通过 StrongSwan VPN 路由所有流量

通过 StrongSwan VPN 路由所有流量

我是新手,请原谅我的无知。我查看过许多其他类似的问题,但无济于事。

尝试设置 StrongSwan VPN,以便客户端 C 可以连接到主机 H、分配虚拟 IP 地址并访问 H 的网络。(由于我在设置和测试时的实际限制,C 和 H 当前位于同一网络上 - 实际上它们是同一台物理 PC 上的虚拟机,网络处于桥接模式,因此它们有自己的 IP 地址。)

使用 StrongSwan 5.3.0、Ubuntu 14.04(在 C 和 H 上)。

ipsec up home在 C 上运行,连接似乎已建立。H 可以 ping 分配给 C 的虚拟 IP 地址 (192.168.0.1),C 可以看到 ping 到其虚拟 IP 地址(使用 tcpdump 确认)。

但是,据我所知,C 上的所有流量仍直接通过 C 的网络连接,而不是通过隧道 - 如果我运行tcpdump ip proto \\icmp第三个测试服务器 (T),并从 C 对其进行 ping,我会看到带有 C 真实 IP 地址的请求。如果我wget从 C 到 T执行 ping 操作,情况也是如此。

我的配置如下:

# 主机 (H) 上的 /etc/ipsec.conf

config setup

conn %default
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    keyexchange=ikev2

conn rw
    left=192.168.196.50
    leftcert=moonCert.pem
    [email protected]
    leftfirewall=yes
    right=%any
    rightsourceip=192.168.0.0/16
    auto=add

-

# /etc/ipsec.conf — 在客户端(C)

 config setup

 conn %default
     ikelifetime=60m
    keylife=20m
     rekeymargin=3m
     keyingtries=1
     keyexchange=ikev2

 conn home
     left=192.168.198.74
     leftsourceip=%config
     leftcert=carolCert.pem
     [email protected]
     leftfirewall=yes
     right=192.168.196.50
     [email protected]
     auto=add

H的真实IP地址为192.168.196.50。C的真实IP地址为192.168.198.74。

答案1

我需要跑

sudo sysctl net.ipv6.conf.all.forwarding=1
sudo sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -j MASQUERADE

在主机上使其将流量路由出去。

我的客户端 C 现在可以看到本地网络上的其他机器,以及互联网上的部分机器(但不是全部,我不明白)。

相关内容