局域网VPN路由设置

这一篇没什么干货,记录一下vpn的路由设置。背景是这样的:

我在一台cubieboard上面安装了openconnect,这是一个Cisco Anyconnect VPN客户端,现在已经连接到了我位于台湾的VPN Server上。现在,在同一个局域网下,我的笔记本电脑希望不做任何配置可以连接到VPN server身后的网段。

记录配置如下。

路由器配置

路由器是openwrt平台,作如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. iptables允许转发
# 允许本地转发指定源目IP的数据包
iptables -I FORWARD -s 192.168.1.0/24 -d 10.0.0.0/8 -j ACCEPT
iptables -I FORWARD -s 192.168.1.0/24 -d 172.16.0.0/12 -j ACCEPT
# 192.168.1.0/24为本地局域网网段
# 10.0.0.0/8,172.16.0.0/12 为目的VPN网段
# 2.添加路由:
# 对于vpn网段的数据包,转发给vpn client(cubieboard) 192.168.1.100处理
route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.100
route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.100
# 192.168.1.100为cubieboard(vpn client) IP

cubieboard(vpn client)配置

1
2
# SNAT的一种,自动将源IP转换成Anyconnect VPN的client地址
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

测试

与本地ping vpn网段,可以看到:

1
2
3
4
5
6
7
8
9
10
11
MacPro:~ tyr$ ping 10.1.1.1
PING 10.1.1.1 (10.1.1.1): 56 data bytes
64 bytes from 10.1.1.1: icmp_seq=0 ttl=60 time=102.138 ms
92 bytes from router (192.168.1.1): Redirect Host(New addr: 192.168.1.100)
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 0054 75fb 0 0000 3f 01 d81d 192.168.31.176 10.1.1.1
64 bytes from 10.1.1.1: icmp_seq=1 ttl=60 time=6.808 ms
92 bytes from router (192.168.1.1): Redirect Host(New addr: 192.168.1.100)
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 0054 da96 0 0000 3f 01 7382 192.168.31.176 10.1.1.1

可以看到路由器发送了一个ICMP的redirect消息,将去往10.1.1.1的流量重定向到192.168.1.100,这是因为在一个网段中,192.168.1.100是最优的下一跳,当主机接受后将直接把后续的报文发送给192.168.1.100。

如果您觉得这篇文章对您有帮助,不妨支持我一下!