我們可以使Vpn服務器在Android上運行嗎?

 是的,我們可以在Android上運行VPN服務器,但不能沒有root用戶。常規Android不支持VPN服務器,甚至客戶端也不支持許多協議,因此您必須安裝第三方應用程序。有類似Servers Ultimate提供VPN服務器的應用程序,但我尚未測試。CLI使生活變得簡單:

  • 構建openvpn靜態二進製文件並複製到/system/bin
  • 創建一個基本的服務器配置文件:

    ### /etc/openvpn/server.conf
    
    # basic configuration
    port 69
    proto udp
    dev tun
    mode server
    tls-server
    keepalive 10 120
    
    # dynamic IP pool
    server 10.8.0.0 255.255.255.0
    
    # send RESTART command to clients if tunnel is restarted (UDP)
    explicit-exit-notify 1
    
    # configure like a "traditional" broadcast-based network
    topology subnet
    push "topology subnet"
    
    # send all traffic from client to VPN
    push "redirect-gateway def1 bypass-dhcp"
    
    # DNS nameservers
    push "dhcp-option DNS 1.1.1.1"
    push "dhcp-option DNS 1.0.0.1"
    
    # certificates and keys to use
    ca ca.crt
    cert server.crt
    key server.key
    dh dh2048.pem
    tls-crypt tc.key
    
    # cipher algorithm to use for encryption
    cipher AES-256-CBC
    
    # log files
    log /data/media/0/openvpn.log
    status /data/media/0/openvpn-status.log
    verb 3
    
    # do not recreate TUN interface on reset (SIGUSR1)
    persist-tun
    
    # do not reread key files on reset (SIGUSR1)
    persist-key
    
  • 創建服務器密鑰和證書。tc.key可以通過執行創建openvpn --genkey --secret tc.key
    ca.crtserver.keyserver.crt並且dh2048.pem使用的是內置EasyRSA在Linux / Windows PC上可以輕鬆完成,而在Android上則需要付出額外的努力:

    ~$ easyrsa init-pki
    ~$ easyrsa build-ca
    ~$ easyrsa build-server-full server nopass
    ~$ easyrsa gen-dh
    
  • 將配置文件,證書和密鑰複製到/etc/openvpn/並設置權限:

    ~# chmod 0600 /etc/openvpn/{ca.crt,dh2048.pem,server.crt,server.key,tc.key}
    ~# chmod 0644 /etc/openvpn/server.conf
    ~# chmod 0755 /system/bin/openvpn
    ~# chown -R 0.0 /etc/openvpn /system/bin/openvpn
    
  • 使用EasyRSA以相同的方式構建客戶端密鑰和證書:

    ~$ easyrsa --days=30 build-client-full client nopass
    

    複製的內容ca.certclient.keyclient.crttc.key客戶端配置文件。如果要從互聯網或本地(WiFi /熱點)IP地址連接,還請添加Android設備的公共IP地址:

    ### client.ovpn
    
    client
    dev tun
    auth-nocache
    verb 3
    
    remote-cert-tls server
    cipher AES-256-CBC
    
    pull
    resolv-retry infinite
    
    remote <IP_ADDRESS> 69 udp
    nobind
    connect-retry 5 5
    connect-timeout 10
    
    # only for Windows
    #block-outside-dns
    
    <ca> INSERT_HERE </ca>
    <cert> INSERT_HERE </cert>
    <key> INSERT_HERE </key>
    <tls-crypt> INSERT_HERE </tls-crypt>
    
  • Android完全忽略main表格,創建自定義規則並插入路由:

    ~# ip rule add table 5000 priority 5000
    ~# ip route add 10.8.0.0/24 dev tun0 table 5000
    ~# ip route add 192.168.43.0/24 dev wlan0 table 5000
    ~# ip route add default dev rmnet_data1 table 5000
    

    rmnet_data1連接到移動數據的接口在哪裡wlan0WiFi或熱點在哪裡根據您的設備調整接口名稱和網絡地址。

    設置轉發和源NAT:

    ~# echo -n 1 >/proc/sys/net/ipv4/ip_forward
    ~# iptables -I FORWARD -i tun+ -j ACCEPT
    ~# iptables -I FORWARD -o tun+ -j ACCEPT
    ~# iptables -t nat -I POSTROUTING -o rmnet_data1 -j MASQUERADE
    
  • 運行服務器,但由於Android與Linux的不同,首先進行一些小的調整:

    ~# mkdir /dev/net
    ~# ln -s /dev/tun /dev/net/tun
    
    ~# openvpn --cd /etc/openvpn/ --config server.conf
    

導入client.ovpn任何OpenVPN客戶端應用程序(在Android / Windows / Linux上)並進行連接。

您可以在服務器上進行高級配置,可以將其作為Androidinit服務運行,也可以隨心所欲。

留言

這個網誌中的熱門文章

DeepNude 2.0 – Deepnude AI算法一键脱衣,绿色破解版,免费下载

用数字货币洗钱,警察蜀黍就没招了吗?| 浅黑笔记

最简单的Trojan一键脚本,效率高/速度快/延迟低,支持tls1.3,系统要求>=Centos7