我尝试通过 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,问题解决了。