美文网首页
单网卡共享办公网络VPN链接

单网卡共享办公网络VPN链接

作者: 玩家翁伟 | 来源:发表于2018-08-07 15:23 被阅读399次

    我们办公室是在海外,需要通过VPN拨回国内总部的办公网络,以访问总部内网的各种设施。

    一般上,这需要通过专门的路由设备直接做点对点的联通,以确保连接速度以及稳定性。

    但经过尝试,也可以使用单台Linux服务器作为网关,实现对VPN、DNS智能解析、内外网分流等功能。

    办公网络环境

    • 使用的是共享办公室的独立网络
    • 无公网IP
    • 对路由器没有控制
      • DHCP也控制不了
    • 大部分同事使用wifi上网;少数同事使用网线上线
      • 两者属于同一子网:192.168.117.0/24

    实现方式

    • 在内网找一台网线连接PC安装Linux
      • 为了方便,直接使用的是Ubuntu 18.04 LTS;使用别的系统也行
    • Linux上安装openconnectiptablesdnsmasq
      • iptables貌似默认就有了?
    sudo apt-get update
    sudo /sbin/modprobe tun
    sudo apt-get install openconnect
    sudo apt-get install iptables
    sudo apt-get install dnsmasq
    

    VPN配置

    CiscoVPNClient.png

    openconnect是VPN客户端,可以替代CISCO的AnyConnect拨入总部的VPN网络,命令类似:

    openconnect --user=XXXX --passwd-on-stdin vpn.company.TLD < password
    

    VPN拨通后,默认会把成为default gateway,即把本机所有流量都通过VPN走,这明显是不科学的,特别是我们办公室是在海外,拨回总部内网后,如果全部流量都经过大陆的网络转发,会严重影响速度甚至还有联通性的问题。

    正确的做法是只把内网的流量由VPN走,外网访问还继续走现有的网络。

    假设VPN拨通后,设备名为:tun0

    路由配置

    假设总部内网有192.168.0.0/1610.0.0.0/8两个网段,那么,前者与海外办公室的子网192.168.117.0/24冲突,幸好海外办公室不需要访问总部内网同一网段下的其它资源,目前只用到192.168.0.0/18网段下的资源。

    路由配置类似如下:

    sudo route del default gw 0.0.0.0
    sudo route add -net 192.168.0.0/18 dev tun0
    sudo route add -net 10.0.0.0/8 dev tun0
    

    DNS配置

    总部内网亦会有内网的DNS服务器(192.168.0.1)对一些内网的域名进行解析,假设域名有 *.center.com*.office.com等。

    那么,我们需要配置dnsmasq对这两个域名做特殊处理,然后其它的域名解析还是使用谷歌的DNS:8.8.8.8

    echo "server=/center.com/192.168.0.1
    server=/office.com/192.168.0.1
    server=8.8.8.8" >> /etc/dnsmasq.conf
    
    service dnsmasq restart
    

    网关配置

    经过上面的VPN配置路由配置DNS配置Linux服务器本身已经可以智能切分内外网的访问,剩下的是需要让它作为网关,把这网络访问共享给办公室内的其它电脑访问:

    假设Linux服务器的IP是:192.168.117.88,网线连接的设备名是enp1s0

    首先需要启用ipv4 forward

    echo 1 > /proc/sys/net/ipv4/ip_forward
    

    然后是两个网络设备(VPN的tun0跟网线的enp1s0)之间的NAT转发:

    sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
    sudo iptables -A FORWARD -i enp1s0 -o tun0 -j ACCEPT
    sudo iptables -A FORWARD -o tun0 -j ACCEPT
    sudo iptables -A FORWARD -i tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    sudo iptables -A INPUT -i tun0 -j ACCEPT
    

    这样子,我们的Linux服务器便可以作为网关,供办公子网内其它电脑做中转。

    其它电脑

    其它电脑上则需要修改网络连接方式,从默认的DHCP,换成手动配置,类似:

    IP: 192.168.117.2
    Subnet mask: 255.255.255.0
    Gateway: 192.168.117.88
    DNS: 192.168.117.88
    

    这样便可透明的使用192.168.117.88这台Linux服务器上的DNS、以及路由转发。

    当然,需要手动修改每台电脑仅仅只是因为我们对办公网络的路由、DHCP服务器没有控制,不然可以自己配置DHCP服务器,将IP、网关、DNS的配置自动化掉。

    相关文章

      网友评论

          本文标题:单网卡共享办公网络VPN链接

          本文链接:https://www.haomeiwen.com/subject/qdhavftx.html