用 OpenVPN 提供 IPv6 服务

• 本文约 557 字,阅读大致需要 2 分钟 | Security | #OpenVPN | #IPv6 | #VPN | #Networking | #Security

有时,会有需要接入远程的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进行必要的配置。