在国内的上网环境下,使用 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.1ip link set iptun0 upip 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.10ip link set iptun0 upip 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 |