返回列表 發帖

Openwrt v2ray server + tls1.3 + websocket + webserver + acme 入門篇

本帖最後由 tomleehk 於 2020-4-6 13:32 編輯

Preparation
1. A router supported by openwrt with at least 32M ROM ( e.g. Newifi 3 D2 )
2. Openwrt stable release ( e.g 18.06.4, https://downloads.openwrt.org/releases/ )
3. WinSCP (download at https://winscp.net/eng/download.php )
4. OpenSSH ( e.g. https://github.com/PowerShell/Win32-OpenSSH/releases )
5. V2ray package ( e.g. https://github.com/kuoruan/openwrt-v2ray/releases )
6. DDNS registration ( e.g. www.dynu.com )
7. Valid certificate ( e.g. Let's encrypt, https://www.sslforfree.com/ )
8. Openwrt webserver package supporting websocket proxy (e.g. lighttpd )
9. Simple webpage source code (e.g. https://www.template.net/web-tem ... gin-form-templates/ )
9. V2ray client ( e.g. Kitsunebi )
10. Knowledge of V2ray ( e.g. https://www.v2ray.com/ )
11. Knowledge of UNIX/openwrt
12. Knowledge of webserver setup

Target

Router acts as https webserver with functioning webpage and valid certificate to deal with the GFW.
The v2ray server stays behind the webserver and uses the webserver's proxy function as cover-up.


from official lighttpd website, 要HAPROXY/SNIPROXY
1) HKBN has two public IP. 2) In case failure, still can access by an backup device.
3) Add another V2ray server can offline traffic.
No matter N1/T1 is about $100/$200, 不用浪費時間在 HAPROXY。(SNIPROXY 沒有Docker)

剛Place order to buy a T1.. (N1 should be better)

TOP

本帖最後由 tomleehk 於 2020-1-13 13:33 編輯

回復 60# yiucsw

lighttpd我嘅實試只能用proxy 間接share v2ray 同 webserver 共用443 port
lighttpd印象中實試用proxy不能share ocserv 共用443 port , 睇吓有無其他會員試到work

TOP

本帖最後由 tomleehk 於 2020-1-13 14:12 編輯

回復 59# yiucsw

client 只送出正確path 不會送至v2ray server
確保client 送出正確host header + path 才送至v2ray server
check host header並唔喺必要嘅, 好處喺俾只喺check path多一層checking, 多一層保障

TOP

在找share 443 port, ocserv with lighttpd。
能 traffic route to ocserv server?
https://ocserv.gitlab.io/www/recipes-ocserv-multihost.html

TOP

本帖最後由 yiucsw 於 2020-1-13 10:24 編輯

回復 4# tomleehk

環境在 : lighttpd 在二級路由,測試是內網進行。v2ray Data 是從 2nd HKBN public IP port forward。
請教,對比在Modproxy 最底範例,沒有以下這句,有什麼作用,可以刪除嗎,security 的影響?
$HTTP["host"] == "testhost.ddnsfree.com"
https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModProxy

----------------------------------------------
請幫忙:加一網頁,將Dynu API client id 同密碼 寫到 Environment Virable.
主要目的是 remote manage Docker by Portainer,Run ACME on docker。  currently run ACME on ARMBIAN host。
Give up Godaddy,mobile phone is resetted by accident,godaddy need strict policy to reset 2nd authentication。

TOP

本帖最後由 yiucsw 於 2020-1-1 19:30 編輯

share port.
因為openconnect, V2ray + TLS 在同一個 Esxi. 所以想如何share port?
haproxy. Haproxy 好像不簡單?有沒有Sample config? Performance 如何?

因為 HKBN 有2個 public ip, Router1 port forward 443 到 Router2 4443,再port foward Openconnect 443.
Routeros 比較 認識:
1) Router2. (routeros 在 Esxi 前端)同普通port forward 一樣,port forward 4443 到 openconnect 443.
IP firewall NAT
1 add action=dst-nat chain=dstnat dst-port=4443 in-interface=wan protocol=tcp to-addresses=192.168.x.50 to-ports=443
2 add action=dst-nat chain=dstnat dst-port=4443 in-interface=wan protocol=udp to-addresses=192.168.x.50 to-ports=443

2) Router1. (non-Esxi router)
IP firewall NAT
1    chain=dstnat action=dst-nat to-addresses=router2's public ip to-ports=4443
      protocol=tcp in-interface=wan dst-port=443
2    chain=dstnat action=dst-nat to-addresses=router2's public ip to-ports=4443
      protocol=udp in-interface=wan dst-port=443

比較麻煩是 Router1 ip firewall to-address 將Domain-name 變成 IP address.
要 scheduler 來check ip change

Location HK. Android - Prepaid card 3 Mobile Data 數據有點浮動. Low Speed, Port forward 沒有太多影響 。
no openconnect:      : ping 19ms, down 23.2Mbps up 10.1Mbps.
With port forward     :ping 38ms, down 15.2 Mbps up 3.99 Mbps
Without port forward :ping 55ms, down 13.0 Mbps up 3.77 Mbps
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

本帖最後由 yiucsw 於 2019-12-21 12:53 編輯

谢谢改正了。 Enable TLS 是不成功的問題。
在v2ray log 內, error message. 301 Move Permanently.
发现是lighttpd conf 內弄錯。 (andriod 的 v2ray client 沒有問題,只是PC 端 不成)

原因:原本用 v2ray.dynu.com。 TLS 要用Goddy 的domain. SSL 看到我用v2ray.dynu.com,有Certification error. 改了v2ray 的Server 名字,SSL 過了 Certification check. Android 端能 上V2ray, 所以沒有想是lighttpd 的問題。。

lighttpd config :
  $HTTP["host"] == "v2ray.myserver.com"   

現在 client 的 v2ray config. tls + ws
{
  "log" : {
    "access": "/var/log/v2ray-access.log",
    "error": "/var/log/v2ray-error.log",
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 1080,
      "listen": "0.0.0.0",
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "v2ray.myserver.com",
            "port": 443,
            "users": [
              {
                "id": "c50bf28e-98cd-a351-b8d5-d60d56c376c7",
                "alterId": 64
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "tlsSettings": {
          "allowInsecure": true,
          "serverName": "v2ray.myserver.com"},
        "wsSettings": {
          "path": "/vpath"
        }
      },
      "mux": {"enabled": true}
    },
    {
      "protocol": "freedom",
      "settings": {},
      "tag": "direct" //如果要使用路由,这个 tag 是一定要有的,在这里 direct 就是 freedom 的一个标号,在路由中说 direct V2Ray 就知道是这里的 freedom 了
    }
  ],
  "routing": {
    "domainStrategy": "IPOnDemand",
    "rules": [
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": ["geosite:cn"] // 中国大陆主流网站的域名
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "ip": [
          "geoip:cn", // 中国大陆的 IP
          "geoip:private" // 私有地址 IP,如路由器等
        ]
      }
    ]
  }
}

Startup  (match server side log's location.)
rm /var/log/v2ray-error.log > /dev/null 2>&1
rm /var/log/v2ray-access.log > /dev/null 2>&1

現在 Server v2ray log 有error message,大概 7 second 一次
rejected  v2ray.com/core/proxy/vmess/encoding: failed to read request header > websocket: close 1000 (normal)

TOP

...
"streamSettings": {
        "network": "ws",
        "security": "tls",
        "tlsSettings": {"allowInsecure": true,"serverName": "your server url"},
        "wsSettings": {
          "path": "/vpath"
        }
...

TOP

本帖最後由 yiucsw 於 2019-12-20 21:15 編輯

刚加上TLS后 失败了 。有什么建议?MUX / TLS 只能选一种,开两种 手机上打开 youtube 慢的要死。
在手机 kitsunebi TLS 能打开google.com
newifi3 上 不能打开 国外网站。。。

client json 加 "security": "tls",

> v2ray.com/core/common/retry: [v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://mydomain.com/vpath): 301 Moved Permanently > websocket: bad handshake] > v2ray.com/core/common/retry: all retry attempts failed

{
  "log" : {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 1080,
      "listen": "0.0.0.0",
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "mydomain.com",
            "port": 443,
            "users": [
              {
                "id": "c50bf28e-98cd-a351-b8d5-d60d56c376c7",
                "alterId": 64
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "wsSettings": {
          "path": "/vpath"
        }
      },
      "mux": {"enabled": true}
    },
    {
      "protocol": "freedom",
      "settings": {},
      "tag": "direct" //如果要使用路由,这个 tag 是一定要有的,在这里 direct 就是 freedom 的一个标号,在路由中说 direct V2Ray 就知道是这里的 freedom 了
    }
  ],
  "routing": {
    "domainStrategy": "IPOnDemand",
    "rules": [
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": ["geosite:cn"] // 中国大陆主流网站的域名
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "ip": [
          "geoip:cn", // 中国大陆的 IP
          "geoip:private" // 私有地址 IP,如路由器等
        ]
      }
    ]
  }
}

TOP

本帖最後由 tomleehk 於 2020-1-4 22:50 編輯

Openwrt V2ray 透明代理 tls + ws (實踐編)
http://www.telecom-cafe.com/forum/viewthread.php?tid=7789

TOP

本帖最後由 yiucsw 於 2019-12-20 19:51 編輯


Newifi3 客户端加Route +Mux, 好像开youtube 加快了:

{
  "log" : {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 1080,
      "listen": "0.0.0.0",
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "yourv2rayserver.dynu.net",
            "port": 8443,
            "users": [
              {
                "id": "c50bf28e-98cd-a351-b8d5-d60d56c376c7",
                "alterId": 64
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/vpath"
        }
      },
      "mux": {"enabled": true}
    },
    {
      "protocol": "freedom",
      "settings": {},
      "tag": "direct" //如果要使用路由,这个 tag 是一定要有的,在这里 direct 就是 freedom 的一个标号,在路由中说 direct V2Ray 就知道是这里的 freedom 了
    }
  ],
  "routing": {
    "domainStrategy": "IPOnDemand",
    "rules": [
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": ["geosite:cn"] // 中国大陆主流网站的域名
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "ip": [
          "geoip:cn", // 中国大陆的 IP
          "geoip:private" // 私有地址 IP,如路由器等
        ]
      }
    ]
  }
}

TOP

本帖最後由 yiucsw 於 2019-12-27 10:19 編輯

比较慢,还是基础篇,还没有做透明代理, 所以没有iptable.
在Newifi wifi client, 已能用 Esxi openwrt 的V2ray server 上网.

DNS:

DNS, 原本copy and paste V2ray DNS statement, 看到 V2ray 同 Chinadns 好像能连接,看看能不能用。
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

個人覺得唔用iptables 改default udp/tcp route未必work
睇吓其他cHing有無建議

TOP

本帖最後由 yiucsw 於 2019-12-20 14:39 編輯

Shortcut solution:
newifi3 的 wifi 用户 如何利用 v2ray client。
Firefox 加 Socks.
加 127.0.0.1 失败,不能上网 (access log 没有 entry)


加 192.168.123.1 (newwifi default IP 地址,要改), better. access log has entry.


client V2ray config 改 listen.
      "port": 1080,
      "listen": "127.0.0.1",


      "port": 1080,
      "listen": "0.0.0.0",

最后的change 有点Try and error. any suggestion?
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

返回列表