通过 ipsec 进行互联网共享

通过 ipsec 进行互联网共享

我尝试通过 ipsec 隧道将我的 Windows 7 工作站连接到 Internet。
我有:

192.168.88.251  - win7 workstation
192.168.88.1    - my mikrotik router
VPN_IPSEC       - my vpn with ipsec address
VPN_TEST        - my 2nd vpn for connectiviti testing

VPN_IPSEC 上的 StrongSwan 配置:

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-sha-modp1024
 esp=aes256-sha-modp1024
 dpdaction=clear
 dpddelay=300s
 rekey=no

 left=%any
 leftid=VPN_IPSEC_IP
 leftsendcert=always
 leftsubnet=0.0.0.0/0

 right=%any
 rightid=%any
 authby=secret
 rightsubnet=192.168.88.251/24
 rightdns=8.8.8.8,8.8.4.4

在 mikrotik 方面我有相应的配置

ipsec status 命令输出:

ikev2-vpn[1]: ESTABLISHED 110 minutes ago, 
VPN_IPSEC_IP[VPN_IPSEC_IP]...MY_PUB_IP[MY_PUB_IP]
 ikev2-vpn{1}:  INSTALLED, TUNNEL, ESP SPIs: ca494e15_i 099301b9_o
 ikev2-vpn{1}:   0.0.0.0/0 === 192.168.88.251/32 

显然我的 ipsec 隧道工作正常。在 VPN_IPSEC 上,我 ping 192.168.88.251,我看到 ping 成功。同时,在 win7 上 ping 8.8.8.8,我看到 mikrotik 上已安装 SA 部分的流量,如果我在 VPN_IPSEC 上创建一些与 192.168.88.251 一起运行的防火墙规则,我会看到匹配计数器增加。

在 VPN_IPSEC 上我有这个初始防火墙配置:

Chain INPUT (policy ACCEPT 936 packets, 92296 bytes)

Chain FORWARD (policy ACCEPT 483 packets, 29148 bytes)

Chain OUTPUT (policy ACCEPT 306 packets, 30108 bytes)

表NAT相同:全部接受

现在我知道来自 win7 的加密流量进入 VPN_IPSEC。我想知道它是否转发到 VPN_IPSEC 之外。

在 win7 上我

ping VPN_TEST

在 VPN_IPSEC 上我

tcpdump  -nni venet0 icmp

我懂了:

IP 192.168.88.251 > VPN_TEST_IP: ICMP echo request, id 512, seq 21277, length 40


IP 192.168.88.251 > VPN_TEST_IP: ICMP echo request, id 512, seq 49949, length 40

即没有答案

现在我添加 POSTROUTING 规则:

iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o venet0 -j MASQUERADE

IP 192.168.88.251 > VPN_TEST_IP: ICMP echo request, id 25095, seq 301, length 64
IP 185.69.52.31 > VPN_TEST_IP: ICMP echo request, id 25095, seq 301, length 64
IP 192.168.88.251 > VPN_TEST_IP: ICMP echo request, id 25095, seq 302, length 64
IP 185.69.52.31 > VPN_TEST_IP: ICMP echo request, id 25095, seq 302, length 64

即没有答案,但我看到数据包是伪装的

同时在 VPN_TEST 上我执行:

tcpdump  -nni eth0 icmp

我没有看到来自我的VPN_IPSEC的ping,但我看到来自互联网主机的随机ping。

我在win7上也这么做:

ping 8.8.8.8 

但我没收到任何回复。

同时当我在 VPN_IPSEC 上执行

ping VPN_TEST

我在两个 tcpdump 上都看到了所有 ping,并且看到了回复

即,来自我的隧道的流量停留在 VPN_IPSEC 上

怎么会这样?

如何正确配置VPN_IPSEC 上的防火墙。

更新:我知道对于互联网连接共享,我应该创建伪装和转发规则。此外,我应该有 net.ipv4.ip_forward=1。我已经有了。而且我尝试了许多伪装和转发规则。没有结果。

此时我只想看到,从隧道发出的 ping 到达我的 VPN_TEST,然后返回到 VPN_IPSEC。

答案1

我的问题出在 OpenVz vps 限制上。当我在 vps 上运行相同的 ipsec 隧道时虚拟机hipervisor,问题解决了。

相关内容