• ubuntu16.0安装配置openvpn,客户端在作为网关连接子网


    服务端

    1、安装软件

    apt-get update
    apt-get install openvpn
    apt-get install easy-rsa

    2、复制软件到etc下

    cd /etc/openvpn/
    mkdir /etc/openvpn/easy-rsa
    cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
    mv /etc/openvpn/easy-rsa/easy-rsa /etc/openvpn/easy-rsa/2.0

    3、配置证书环境
    cd /etc/openvpn/easy-rsa/2.0

    vim vars

    export KEY_COUNTRY="CN"
    export KEY_PROVINCE="LiaoNing"
    export KEY_CITY="Shenyang"
    export KEY_ORG="abc.com"
    export KEY_EMAIL="me@abc.com"
    export KEY_OU="vpnusers"

    # 添加 openssl 配置文档
    cp openssl-1.0.0.cnf openssl.cnf


    # 使环境变量生效
    source ./vars

    4、生成证书


    # 清除keys目录下所有与证书相关的文件
    ./clean-all

    # 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
    ./build-ca

    # 为服务端生成证书和私钥, --batch 表示保持默认设置,无须回车确认
    ./build-key-server --batch server

    # 为客户端生成证书和私钥(client可为不同的名称)
    ./build-key --batch client

    # 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
    ./build-dh

    # 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)
    openvpn --genkey --secret keys/ta.key


    # 将证书文件复制到/etc/openvpn/server
    cp -r /etc/openvpn/easy-rsa/2.0/keys/* /etc/openvpn/server

    # 将服务器端配置文件模板复制到/etc/openvpn/server
    cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server
    cd /etc/openvpn/server/
    gunzip -d /etc/openvpn/server/server.conf.gz

    5、配置服务端文件

    vim /etc/openvpn/server/server.conf

    daemon

    # 服务端口
    port 11194

    # 使用的传输协议
    proto tcp

    # 路由模式,桥接模式用dev tap
    dev tun

    #设置固定ip,/etc/openvpn/ccd 里创建somgl文件,ifconfig-push 192.168.19.100 192.168.19.101
    client-config-dir /etc/openvpn/ccd/

    # 证书路径
    ca /etc/openvpn/server/ca.crt
    cert /etc/openvpn/server/server.crt
    key /etc/openvpn/server/server.key
    dh /etc/openvpn/server/dh2048.pem

    # 默认虚拟局域网网段,不要和实际的局域网冲突即可
    server 192.168.19.0 255.255.255.0
    ifconfig-pool-persist ipp.txt

    # 192.168.19.0 是OpenVPN服务器所在局域网的网段
    push "route 192.168.19.0 255.255.255.0"
    push "route 10.10.2.0 255.255.255.0"
    client-to-client

    # 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
    duplicate-cn

    # 这里如果设置了 tls-auth 则客户端也要设置,而且要跟服务器端对应,服务端为0,客户端则为 1
    tls-auth /etc/openvpn/server/ta.key 0

    max-clients 100
    keepalive 10 120
    comp-lzo
    persist-key
    persist-tun

    #认证证书
    crl-verify /etc/openvpn/easy-rsa/easy-rsa/2.0/keys/crl.pem
    status /var/log/openvpn-status.log
    log-append /var/log/openvpn.log

    verb 3

    ###指定只用的认证脚本,这里配置使用用户名和密码登录的支持,可以取代使用秘钥和证书登录
    #auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
     
    ###不请求客户的CA证书,使用User/Pass验证,如果同时启用证书和密码认证,注释掉该行
    #client-cert-not-required

    ### 使用客户提供的UserName作为Common Name
    #username-as-common-name
    #script-security 3

    6、设置固定ip文件

    mkdir /etc/openvpn/ccd

    vim somgl

    ifconfig-push 192.168.19.100 192.168.19.101

    iroute 192.168.122.0 255.255.255.0


    #iroute为客户端下子网地址,子网地址和其他客户端可以互通

    #注意生成客户端证书时名称写为somgl,生成的somgl.crt,somgl.key文件复制到客户端上

    ./build-key --batch somgl

    7、

    配置内核和防火墙,启动服务端

    # 开启路由转发功能
    sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
    sed -i '/net.ipv4.ip_forward/s/#//' /etc/sysctl.conf
    sysctl -p

    其他语句

    # 查看iptables规则
    iptables -nvL

    # 查看nat表
    iptables -nvL -t nat


    # 开机自动加载配置
    sudo apt-get install iptables-persistent


    # 保存规则
    sudo service netfilter-persistent save


    # 开机启动
    systemctl enable openvpn

    # 重启服务
    service openvpn restart

    #服务启动
    /usr/sbin/openvpn /etc/openvpn/server/server.conf &
     

    #撤销证书(会在keys目录下生成crl.pem文件)
    ./revoke-full client

    客户端

    8、客户端配置:

    软件安装和上面一样
    cd /etc/openvpn/client/

    cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/client.conf

    9、配置客户端文件

    vim /etc/openvpn/client/client.conf

    client

    # 这里设置跟服务端一样
    dev tun
    proto tcp

    # OpenVPN 服务端 IP 和端口
    remote 192.168.100.1 11194

    resolv-retry infinite

    nobind

    persist-key
    persist-tun

    # 这里设置证书和秘钥
    ca /etc/openvpn/client/ca.crt
    cert /etc/openvpn/client/somgl.crt
    key /etc/openvpn/client/somgl.key

    remote-cert-tls server
    ns-cert-type server

    # 如果服务端使用 tls-auth, 则这里也要启用
    tls-auth /etc/openvpn/client/ta.key 1

    comp-lzo

    verb 3

    #客户端启动

    /usr/sbin/openvpn /etc/openvpn/client/client.conf &


    10、客户端作为网关

    #开启网卡

    sudo ip link set eth0 up

    sudo ip link set eth2 up


    # 开启路由转发功能
    sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
    sed -i '/net.ipv4.ip_forward/s/#//' /etc/sysctl.conf
    sysctl -p


    #eth2为openvpn客户端作为网关的出接口
    #192.168.122.0是需要连接网关的设备的ip地址

    iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE


    sudo route add -net 192.168.122.0 netmask 255.255.255.0 dev eth2


    #需要连接网关的子设备,连接网闸的eth0网口,设置ip  192.168.122.19  子网掩码  255.255.255.0 网关  192.168.19.100,子设备ping  本地内网ip地址

    #注意客户端服务器上是否有其他防火墙如:ufw、ebtables等,需要停止后在设置iptables

    另一个客户端

    iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE

    route del -net 10.10.3.0 gw 192.168.19.103 netmask 255.255.255.0 dev tun0
    route del -net 10.10.6.0 gw 192.168.19.103 netmask 255.255.255.0 dev tun0
    route del -net 10.10.7.0 gw 192.168.19.103 netmask 255.255.255.0 dev tun0

    设置开机启动

    openvpn-client开机启动服务

    vim /etc/systemd/system/openvpn-client.service

    [Unit]
    Description=openvpn-client
    After=network.target

    [Service]
    Type=simple
    ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/client --config /etc/openvpn/client/client.conf
    Restart=always

    [Install]
    WantedBy=multi-user.target
     

    sudo chmod 755 /etc/systemd/system/openvpn-client.service

    sudo systemctl start openvpn-client.service
    sudo systemctl enable openvpn-client.service
    sudo systemctl daemon-reload

    vim /etc/rc.local


    #增加规则
    iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE

    route add -net 192.168.122.0 netmask 255.255.255.0 dev eth2

  • 相关阅读:
    物联网的概念
    华为机试 - 判断一组不等式是否满足约束并输出最大差
    python----23-集合
    IP代理|一文看懂IPv4与IPv6
    BioVendor游离轻链(κ和λ)Elisa 试剂盒的化学性质
    世媒讯提供海内外媒体宣发服务,引领企业新媒体发展之路
    FormMaking V3.6发布,表单设计中业务规则可视化配置上线
    结构体的简单介绍(3)——结构体的内存对齐
    Spring Webflux 后端处理前端请求的 4 种方式
    serverSocket编程DEMO
  • 原文地址:https://blog.csdn.net/mgledu/article/details/132602702