我想在我的家庭路由器和远程服务器之间建立一个持久隧道,这将允许我维护静态 IP 地址并执行端口转发(我的路由器目前位于另一个非托管路由器后面)。
设置普通 VPN 相当简单,但如果可能的话,我希望避免加密的开销。此隧道的目的不是为了任何形式的隐私;它只是为了让我更好地控制我的普通互联网流量。出于同样的原因,我也不担心中间人或其他攻击媒介。
是否有任何选项可以使这种隧道具有基本身份验证但流量未加密,从而实现最佳性能?
答案1
--密码算法
要查看 OpenVPN 可用的其他密码,请使用 --show-ciphers 选项。
设置 alg=none 以禁用加密。
从 OpenVPN 2.4 开始,密码协商 (NCP) 可以覆盖 --cipher 指定的密码。有关 NCP 的更多信息,请参阅 --ncp-ciphers 和 --ncp-disable。
--ncp-禁用
禁用“可协商加密参数”。这将完全禁用密码协商。
真正的问题是为什么要禁用加密?与使用 OpenVPN 默认设置相比,禁用加密实际上需要做更多工作。我会在默认配置中进行设置,并且只有当您有实际数据表明加密导致性能或其他问题时才禁用加密。
答案2
除了 OpenVPN,如果两种设备都支持,则可以使用 L2TP 协议配置未加密的隧道。
例如,如果家庭路由器和远程服务器都在 Linux 内核上运行,并提供iproute2实用程序套件,可以通过ip-l2tp命令,如下例所示。
在家庭路由器上:
[root@homeRouter]# ip l2tp add tunnel \
tunnel_id 1 peer_tunnel_id 1 \
local ${homeRouterAddr} remote ${remoteServerAddr} \
encap udp udp_sport 1701 udp_dport 1701
[root@homeRouter]# ip l2tp add session \
tunnel_id 1 peer_tunnel_id 1 name l2tp0 \
session_id 1 peer_session_id 1 seq both
[root@homeRouter]# ip link set dev l2tp0 up
[root@homeRouter]# ip addr add dev l2tp0 172.16.24.33/30
在远程服务器上:
[root@remoteServer]# ip l2tp add tunnel \
tunnel_id 1 peer_tunnel_id 1 \
local ${remoteServerAddr} remote ${homeRouterAddr} \
encap udp udp_sport 1701 udp_dport 1701
[root@remoteServer]# ip l2tp add session \
tunnel_id 1 peer_tunnel_id 1 name l2tp0 \
session_id 1 peer_session_id 1 seq both
[root@remoteServer]# ip link set dev l2tp0 up
[root@remoteServer]# ip addr add dev l2tp0 172.16.24.34/30
在上面的例子中,设备将在 172.16.24.32/30 子网下相互通信。
此外,在上面的例子中,L2TP 数据包被封装在 UDP 数据包中。为了提高性能,如果路径上的网络防火墙允许,L2TP 数据包也可以直接封装在 IP 数据包中。
可以通过cookie
向ip l2tp add session
命令行提供有效参数来配置端点之间的基本身份验证。
可以通过启动配置(例如自定义 systemd 单元)使配置持久化。