mirror of
https://github.com/net-byte/vtun
synced 2024-03-14 10:50:03 +08:00
169 lines
4.5 KiB
Markdown
169 lines
4.5 KiB
Markdown
# vtun
|
|
|
|
A simple VPN written in Go.
|
|
|
|
[EN](https://github.com/net-byte/vtun/blob/master/README.md) | [中文](https://github.com/net-byte/vtun/blob/master/README_CN.md)
|
|
|
|
[](https://github.com/net-byte/vtun)
|
|
[](https://goreportcard.com/report/github.com/net-byte/vtun)
|
|

|
|

|
|

|
|
|
|
# Features
|
|
* VPN over udp
|
|
* VPN over websocket
|
|
* VPN over tls
|
|
* VPN over grpc
|
|
* VPN over quic
|
|
* VPN over kcp
|
|
* VPN over utls
|
|
* VPN over dtls
|
|
* VPN over h2
|
|
* VPN over http (Use aes-256-gcm encryption by default)
|
|
* VPN over tcp (Use aes-256-gcm encryption by default)
|
|
* VPN over https (Use aes-256-gcm encryption by default)
|
|
# Usage
|
|
|
|
```
|
|
Usage of vtun:
|
|
-S server mode
|
|
-c string
|
|
tun interface cidr (default "172.16.0.10/24")
|
|
-c6 string
|
|
tun interface ipv6 cidr (default "fced:9999::9999/64")
|
|
-certificate string
|
|
tls certificate file path (default "./certs/server.pem")
|
|
-compress
|
|
enable data compression
|
|
-dn string
|
|
device name
|
|
-g client global mode
|
|
-isv
|
|
tls insecure skip verify
|
|
-k string
|
|
key (default "freedom@2023")
|
|
-l string
|
|
local address (default ":3000")
|
|
-mtu int
|
|
tun mtu (default 1500)
|
|
-obfs
|
|
enable data obfuscation
|
|
-p string
|
|
protocol udp/tls/grpc/quic/utls/dtls/h2/http/tcp/https/ws/wss (default "udp")
|
|
-path string
|
|
websocket path (default "/freedom")
|
|
-privatekey string
|
|
tls certificate key file path (default "./certs/server.key")
|
|
-psk
|
|
enable psk mode (dtls only)
|
|
-s string
|
|
server address (default ":3001")
|
|
-sip string
|
|
server ip (default "172.16.0.1")
|
|
-sip6 string
|
|
server ipv6 (default "fced:9999::1")
|
|
-sni string
|
|
tls handshake sni
|
|
-t int
|
|
dial timeout in seconds (default 30)
|
|
-v enable verbose output
|
|
```
|
|
|
|
## Build
|
|
|
|
```
|
|
scripts/build.sh
|
|
```
|
|
|
|
## Client on Linux
|
|
|
|
```
|
|
sudo ./vtun-linux-amd64 -s server-addr:3001 -c 172.16.0.10/24 -k 123456
|
|
|
|
```
|
|
|
|
## Client on Linux with global mode(routing all your traffic to server)
|
|
|
|
```
|
|
sudo ./vtun-linux-amd64 -s server-addr:3001 -c 172.16.0.10/24 -k 123456 -g
|
|
|
|
```
|
|
|
|
## Client on MacOS
|
|
|
|
```
|
|
sudo ./vtun-darwin-amd64 -s server-addr:3001 -c 172.16.0.10/24 -k 123456 -g -sip 172.16.0.1
|
|
|
|
```
|
|
|
|
## Client on Windows
|
|
To use it with windows, you will need to download a [wintun.dll](https://www.wintun.net/) file in the app directory.
|
|
Open powershell as administrator and run cmd:
|
|
```
|
|
.\vtun-win-amd64.exe -s server-addr:3001 -c 172.16.0.10/24 -k 123456 -g -sip 172.16.0.1
|
|
|
|
```
|
|
|
|
## Server on Linux
|
|
|
|
```
|
|
sudo ./vtun-linux-amd64 -S -l :3001 -c 172.16.0.1/24 -k 123456
|
|
|
|
```
|
|
|
|
## Iptables setup on Linux server
|
|
|
|
```
|
|
# Enable ipv4 and ipv6 forward
|
|
vi /etc/sysctl.conf
|
|
net.ipv4.ip_forward = 1
|
|
net.ipv6.conf.all.forwarding=1
|
|
sysctl -p /etc/sysctl.conf
|
|
# Masquerade outgoing traffic
|
|
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
|
|
# Allow return traffic
|
|
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
|
|
iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
|
|
# Forward everything
|
|
iptables -A FORWARD -j ACCEPT
|
|
|
|
```
|
|
|
|
## Docker
|
|
[docker image](https://hub.docker.com/r/netbyte/vtun)
|
|
|
|
### Run client
|
|
```
|
|
docker run -d --privileged --restart=always --net=host --name vtun-client \
|
|
netbyte/vtun -s server-addr:3001 -c 172.16.0.10/24 -k 123456
|
|
```
|
|
|
|
### Run client with global mode
|
|
```
|
|
docker run -d --privileged --restart=always --net=host --name vtun-client \
|
|
netbyte/vtun -s server-addr:3001 -c 172.16.0.10/24 -k 123456 -g
|
|
```
|
|
|
|
### Run server
|
|
```
|
|
docker run -d --privileged --restart=always --net=host --name vtun-server \
|
|
netbyte/vtun -S -l :3001 -c 172.16.0.1/24 -k 123456
|
|
```
|
|
|
|
## Mobile client
|
|
|
|
### [Android](https://github.com/net-byte/vTunnel)
|
|
<p>
|
|
<a href="https://play.google.com/store/apps/details?id=com.netbyte.vtunnel"><img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" height="100"></a>
|
|
</p>
|
|
|
|
# License
|
|
[The MIT License (MIT)](https://raw.githubusercontent.com/net-byte/vtun/master/LICENSE)
|
|
|
|
# Acknowledgments
|
|
Thanks [JetBrains](https://www.jetbrains.com/community/opensource/#support) for providing licenses.
|
|
|
|
<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png" alt="JetBrains Logo (Main) logo." width="100px">
|