用 OpenVPN 提供 IPv6 服务
有时,会有需要接入远程的IPv6网络。例如,办公或网吧等环境可能不提供IPv6接入的条件,或者需要接入更高安全级别的网络等等。
使用OpenVPN提供IPv6服务需要的条件包括:
- 使用支持IPv6的操作系统,如 FreeBSD;
- 提供服务的机器以某种方式接入IPv6网络,并拥有一定尺寸的地址块;接入方式可以是native的,也可以是通过tunnel获得;
- 提供服务的机器加载了以太网隧道协议模块(
if_tap); - 提供服务的机器启用了IPv6路由功能(
/etc/rc.conf中配置了ipv6_gateway_enable="YES"); - 提供服务的机器启用了某种IPv6自动配置机制,例如启动了rtadv;
- 接入的机器支持IPv6。
一些关键的配置
在tap0上配置一个固定的IPv6地址。例如,你的IPv6前缀::1/64。
在 /etc/rtadvd.conf中配置:
tap0:\
:addr="你的IPv6前缀::":prefixlen#64:此处64为用于VPN的前缀长度。
OpenVPN配置为使用tap设备。
OpenVPN需要有一个up脚本,类似这样:
#!/bin/sh
/sbin/ifconfig tap0内网IPv4地址/掩码
/sbin/ifconfig tap0 inet6 IPv6地址prefixlen 64这个配置主要是为了避免在重启OpenVPN时丢掉网卡的IPv6配置。
客户端的连接后脚本大致如此:
#!/bin/sh
/sbin/ifconfig tap0 inet6 accept_rtadv auto_linklocal
/usr/sbin/rtsold tap0安全考虑
需要适当配置防火墙以防止来自IPv6的攻击。许多系统的防火墙并没有针对IPv6进行必要的配置。