在国内的上网环境下,使用 VPN 的好处显而易见。

有一种 ip tunnel 模式叫 ipip,是我见过搭建 VPN 最简单的方式,但是它有一个前提,即作为网关的两台机器都要有公网 IP,而且支持 ipip 数据包收发。

达成这两个条件以后,我们就可以花两分钟时间快速搭建 VPN 。

假如 A 网络的网关机器公网 IP 为 207.47.0.1,B 网络的网关机器公网 IP 为 207.47.34.10。然后设定目标 VPN 私网网段为 192.168.10.0/24。

我们首先在 A 机器上配置,以 Debian 为例,编辑 /etc/network/interfaces 文件,添加一个虚拟网络设备 sit0,具体配置如下:

?
1
2
3
ip tunnel add iptun0 mode ipip remote 207.47.34.10 local 210.47.0.1
ip link set iptun0 up
ip addr add 192.168.10.11/24 dev iptun0

同样在 B 机器上配置,编辑 /etc/network/interfaces 文件,添加一个虚拟网络设备 sit0,具体配置如下:

?
1
2
3
ip tunnel add iptun0 mode ipip remote 210.47.0.1 local 207.47.34.10
ip link set iptun0 up
ip addr add 192.168.10.12/24 dev iptun0

配置完成后分别重启两台机器的网络:

?
1
# /etc/init.d/networking restart

正常情况下这样两台机器就处在同一个私网网段中了,可以用 /sbin/ifconfig 看到 iptun0 设备。

如果 A 机器要能过 B 机器上网,只要将 A 机器的路由指向 B机器,同时打开 B 机器的 NAT 和 IP 地址转发:

在 A 上执行:

?
1
# ip route replace default via 192.168.10.12 dev iptun0

在 B 上执行:

?
1
2
3
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE