我可以通过 OpenVPN 访问我大学的 VPN,并希望将其扩展到家里的所有设备。我有有线互联网、一个 DD-WRT 路由器、一堆客户端(主要是 Windows)和一台 RHEL 衍生产品、两个 NIC、始终在线的 PC。现在,Linux 路由器中介流量,设置为调制解调器 <-> 类似 RHEL 的路由器 <-> DD-WRT 设备 <-> 客户端。通常,流量是直接伪装的,但是Linux路由器会自动连接到uni的VPN,并且对于一堆期刊,脚本会设置VPN中介的流量:ip route add table main 123.45.67.89 dev tun0
。
我想将 RHEL 计算机替换为单网卡计算机。我正在考虑的设置是调制解调器 <-> DD-WRT 设备 <-> {客户端,新的 RHEL 路由器}。 RHEL 路由器将通过 DD-WRT 设备连接到互联网。它还将连接到 VPN。当其他客户端想要访问互联网时,DD-WRT 应通过 RHEL 路由它们,而 RHEL 将决定直接路由,或者如果需要连接到 123.45.67.89,则通过 tun0。
那可能吗?你会怎么做?
答案1
您必须将 DD-WRT 路由器和所有客户端计算机放入不同的子网中,这样它们就不能直接通信,而只能通过 RHEL 路由器进行通信。为此,您必须将来自不同子网的 2 个 IP 地址分配给 RHEL 路由器的同一个 NIC。
我建立了实验室来测试 CentOS 7 机器上的配置。我还保留了 NetworkManager(NM_CONTROLLED=no
在所有 ifcfg 文件中)。
在 RHEL 路由器上,通过复制当前 NIC 配置并更改 DEVICE 和 IP 指令,将另一个地址添加到同一 NIC:
cd /etc/sysconfig/network-scripts/ cp ifcfg-eth0 ifcfg-eth0:1 vim ifcfg-eth0:1 ##### After editing mine ifcfg-eth0:1 looks like this: DEVICE=eth0:1 ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=10.0.0.10 PREFIX=24
在 RHEL 路由器上设置路由,如果连接转到您的大学子网,则通过 VPN 隧道发送流量,否则通过 DD-WRT 路由器进行默认连接,例如:
route add default via $dd-wrt-ip-address dev eth0 route add $univ-subnet-ip dev tun0
在 RHEL 路由器上启用 ip 伪装。在我的机器上我使用了firewalld
firewall-cmd --add-rich-rule 'rule family=ipv4 masquerade'
将您的家庭客户端计算机放在 10.0.0.0/24 子网上,并让它们使用 10.0.0.10(RHEL 路由器)作为默认网关。