通过 Internet 扩展 LAN

Adn*_*nan 1 networking vpn local-area-network site-to-site-vpn

我有以下场景。一台计算机连接到专用网络。我访问该专用网络上的任何修改。我只是提供了一根网线。

运行在网络上的计算机的 IP 为 172.20.20.15,并且在计算机上有一个应用程序,它完全需要给定的网络设置,以便它可以连接专用网络后面某处的后端数据库。

现在的想法是我想将计算机移动到另一个位置。我可以访问这两个位置的互联网。

我知道我可以在两端(路由器 A 和路由器 B)上放置两个支持 VPN 服务器的路由器。

在此处输入图片说明

我找到了一个 VPN 路由器WN-300ARM-VPN,但在阅读了他们的文档后,我发现我可以连接 2 个不同的网络,所以它似乎不适合我。

在此处输入图片说明

简而言之,您能否建议我可以购买什么类型/品牌的设备,以便我可以通过互联网扩展专用网络。最重要的是我应该保持相同的 IP 设置。

谢谢大家的时间,所有的建议都非常受欢迎。

小智 5

桥接模式下的OpenVPN可以做到这一点。出于类似目的,我在这种模式下广泛使用了它。对于网络而言,它与恰好在不同位置具有两个端口的交换机没有区别。

不需要特殊的硬件。任何具有 2 个 NIC 的运行 Linux 的机器都可以执行此操作。还有一些路由器发行版,例如 Vyatta,将支持这一点。您也许也可以使用 DD-WRT 之类的东西,但我不确定那个。

这就是我使用 openSUSE 作为发行版的方式。使用 Vyatta 之类的东西可能会容易一些,但我已经这样做了很多次,并且效果很好:

选择一台机器作为服务器。在该机器上执行以下任务:

  1. 为密钥管理设置easy-rsa(它存储在openSUSE中的/usr/share/openvpn/easy-rsa/2.0/下,但我在/etc/openvpn下复制了一份,而不是在该位置使用它):

    • cd <easy_rsa 位置>

    • 编辑 vars 文件并设置 KEY_* 参数

    • . 变量

    • ./清理所有

    • ./build-dh

    • ./pkitool --initca

    • ./pkitool --server mybridge-server

    • ./pkitool mybridge-client

  2. 通过创建文件 /etc/sysconfig/network/ifcfg-mybridge 来创建网桥接口,您可以在其中替换 mybridge 所需的任何名称:

    BOOTPROTO='none'
    BRIDGE='yes'
    BRIDGE_FORWARDDELAY='0'
    BRIDGE_PORTS='eth1'
    BRIDGE_STP='off'
    STARTMODE='auto'
    
    Run Code Online (Sandbox Code Playgroud)

2a. 我假设您将 eth1 作为此处的“内部”接口。您实际上可以将其设置为服务器仅使用一个 NIC,这实际上是我在这种情况下通常会做的事情,但我试图使其保持简单。如果您想尝试此操作,请按上述方式创建网桥,将 eth0 放在 BRIDGE_PORTS 中,并将 IP 信息从 ifcfg-eth0 复制到 ifcfg-mybridge。然后删除 ifcfg-eth0,因为您的网桥将作为主接口

  1. 创建一个 /etc/openvpn/mybridge-server.conf(假设您复制了 easy-rsa):

    port 1194
    proto udp
    dev mytun
    dev-type tap
    mode server
    tls-server
    
    ca /etc/openvpn/easy-rsa/keys/ca.crt
    cert /etc/openvpn/easy-rsa/keys/mybridge-server.crt
    key /etc/openvpn/easy-rsa/keys/mybridge-server.key
    dh /etc/openvpn/easy-rsa/keys/dh1024.pem
    
    keepalive 10 600
    comp-lzo
    fast-io
    user nobody
    group nogroup
    persist-key
    persist-tun
    
    script-security 2
    up mybridge-up.sh
    
    status /var/run/openvpn/mybridge-server-status
    verb 3
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在 /etc/openvpn 中创建 mybridge-up.sh 文件,以确保 openVPN 接口在启动时添加到网桥:

    #!/bin/bash
    # Called with these args:
    #   tap_dev tap_mtu link_mtu ifconfig_local_ip ifconfig_netmask [ init | restart ]
    /sbin/ip link set $1 up
    /sbin/brctl addif mybridge $1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 确保 openVPN 在启动时启动,并启动/重启一切:

    • chkconfig --add openvpn

    • 网络重启

    • rcopenvpn 启动

此时,您将拥有一个名为 mybridge 的桥接接口,其中包含 eth1 和 mytun 接口。与任何交换机一样,只有当目标 mac 存在于另一侧时,以太网帧才会通过

现在您可以设置客户端:

  1. 通过创建文件 /etc/sysconfig/network/ifcfg-mybridge 来像在服务器上一样创建网桥接口:

    BOOTPROTO='none'
    BRIDGE='yes'
    BRIDGE_FORWARDDELAY='0'
    BRIDGE_PORTS='eth1'
    BRIDGE_STP='off'
    STARTMODE='auto'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将 ca.crt、mybridge-client.crt 和 mybridge-client.key 文件复制到客户端计算机。我将在我的示例中使用 /etc/openvpn/keys/

  3. 创建一个 /etc/openvpn/mybridge-client.conf:

    proto udp
    dev mytun
    dev-type tap
    client
    
    remote hostname_or_ip_of_server 1194
    
    ca /etc/openvpn/keys/ca.crt
    cert /etc/openvpn/keys/mybridge-client.crt
    key /etc/openvpn/keys/mybridge-client.key
    
    float
    resolv-retry infinite
    nobind
    comp-lzo
    fast-io
    user nobody
    group nogroup
    persist-key
    persist-tun
    
    script-security 2
    up mybridge-up.sh
    
    verb 3
    
    Run Code Online (Sandbox Code Playgroud)
  4. 从 /etc/openvpn 中的服务器复制或创建 mybridge-up.sh 文件

  5. 就像在服务器上一样,确保 openVPN 在启动时启动,并启动/重启一切:

    • chkconfig --add openvpn

    • 网络重启

    • rcopenvpn 启动

毕竟,任何一方的任何机器都可以相互通信,就好像它们在同一个物理段上一样。如果需要,您甚至可以从一侧为 DHCP 提供服务,或者远程配置带有预配置静态 IP 地址的开箱即用设备。