Commit graph

87 commits

Author SHA1 Message Date
B. Blechschmidt
58faf871c3 Fix copy and paste error 2023-03-25 21:52:58 +01:00
B. Blechschmidt
4a48b297f3 Restore network configuration on Drop 2023-03-25 21:41:40 +01:00
B. Blechschmidt
e4d4e0965e Add root privilege requirement notice 2023-03-25 21:18:45 +01:00
B. Blechschmidt
1a4a8c4c16 Add auto setup method 2023-03-25 21:12:41 +01:00
B. Blechschmidt
d4127af422 Add DNS hint
Virtual DNS intercepts the DNS queries generated by the machine. This
requires that the queries are actually sent through the tunnel
interface. In some scenarios, this is not automatically the case, for
example when `/etc/resolv.conf` contains a `nameserver` entry with some
local IP address for which there is a route through the ethernet
interface. A special-purpose IP address like 198.18.0.1 is unlikely to
be inside another route than the default route and can be used to force
DNS resolution through the tunnel.
2023-03-25 15:29:15 +01:00
B. Blechschmidt
20dc6f78f1 Refactor
This commit moves some essential types to lib and fixes one clippy
warning: https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names
2023-03-25 13:07:49 +01:00
B. Blechschmidt
e6e6c70006 Fix formatting
IPv6 addresses without ports are not enclosed in brackets. They only get
enclosed in brackets in combination with a port.
2023-03-25 11:02:25 +01:00
ssrlive
d4410264e6 refine code 2023-03-25 16:44:33 +08:00
B. Blechschmidt
ce8ecbe44e Fix CI 2023-03-25 02:01:17 +01:00
B. Blechschmidt
a5aac8c0a4 Merge SOCKS4 support
The SOCKS4 tests in the CI pipeline will currently fail, as no SOCKS4
test server for automated testing has been set up yet.
2023-03-25 01:53:30 +01:00
B. Blechschmidt
341bab5586 Implement SOCKS4 2023-03-25 01:39:46 +01:00
B. Blechschmidt
c8e1872efe Add configuration notes 2023-03-24 22:28:59 +01:00
ssrlive
197b1c83a4 use thiserror to make error handler simple 2023-03-24 21:30:20 +01:00
ssrlive
bfa1bbc462 switch to smoltcp dev version
to support IpProtocol with Hash trait
2023-03-24 21:30:20 +01:00
B. Blechschmidt
4eddcfd02b Fix code style 2023-03-24 18:14:31 +01:00
B. Blechschmidt
8135ed3dce Handle poll interrupt gracefully 2023-03-24 18:11:23 +01:00
B. Blechschmidt
280073ebfe Fix test framework 2023-03-24 18:04:27 +01:00
B. Blechschmidt
5930b9b3b1 Merge improved error handling from ssrlive 2023-03-24 15:31:05 +01:00
B. Blechschmidt
83846fe631 Make virtual DNS more robust 2023-03-24 13:43:44 +01:00
B. Blechschmidt
3c8005e6b7 Use LRU cache for virtual DNS
This commit introduces an LRU cache for virtual DNS and fixes a bug
where the virtual DNS feature would cause connection mappings to time
out.
2023-03-24 13:26:31 +01:00
ssrlive
31e8d4791e remove s2e function 2023-03-24 16:32:47 +08:00
ssrlive
0fd5d85155 clean code 2023-03-24 15:57:54 +08:00
ssrlive
1d1e50c36a remove lots of unwrap() 2023-03-24 14:31:22 +08:00
ssrlive
ad388f897a refine TunToProxy struct 2023-03-24 09:27:31 +08:00
B. Blechschmidt
7dec7f59f1 Add some TODOs 2023-03-23 22:48:47 +01:00
B. Blechschmidt
7d3e37b1d9 Explain DNS feature in README 2023-03-23 22:44:04 +01:00
B. Blechschmidt
6b7f550e7a Enable virtual DNS by default for the CLI.
This commit enables virtual DNS by default for the CLI.

Pros for this decision:
  - It works out of the box in most cases.
  - Users do not need to install third-party software.
  - Users do not need to update their /etc/resolv.conf.

Cons:
  - Not every server might support this.
  - Hijacking port 53 without asking is somewhat intrusive.

Also, make the --dns argument an enum type. In the future, native
support for DNS over TCP/TLS might be added. In that case we could e.g.
supply tcp://1.1.1.1 to the --dns argument without breaking the CLI.
2023-03-23 22:13:35 +01:00
B. Blechschmidt
7695ba9c39 Increase DNS implementation robustness 2023-03-23 21:38:17 +01:00
B. Blechschmidt
846375a7d3 Improve readability of IP addresses 2023-03-23 19:02:20 +01:00
B. Blechschmidt
5295721461 Enable logging in tests 2023-03-23 18:11:08 +01:00
B. Blechschmidt
8be40a1fbd Squashed code beautifications
commit d5fdf845bf
Author: ssrlive <30760636+ssrlive@users.noreply.github.com>
Date:   Thu Mar 23 23:21:22 2023 +0800

    Update tun2proxy.rs

commit 2540daa423
Author: ssrlive <30760636+ssrlive@users.noreply.github.com>
Date:   Thu Mar 23 22:40:26 2023 +0800

    Update main.rs

commit 9ef5efb864
Author: ssrlive <30760636+ssrlive@users.noreply.github.com>
Date:   Thu Mar 23 22:19:06 2023 +0800

    Update main.rs

commit 017ea1a17a
Author: ssrlive <30760636+ssrlive@users.noreply.github.com>
Date:   Thu Mar 23 22:15:00 2023 +0800

    Update main.rs
2023-03-23 18:01:25 +01:00
B. Blechschmidt
d13c7ff61b Add DNS tests 2023-03-23 14:51:56 +01:00
ssrlive
32403c5423 remove the From implement 2023-03-23 21:39:27 +08:00
B. Blechschmidt
e3e402d8ce Update .gitignore 2023-03-23 14:17:57 +01:00
B. Blechschmidt
5ce3637bde Use dotenvy in main 2023-03-23 13:28:05 +01:00
B. Blechschmidt
4260e28a52 Improve code style 2023-03-23 13:24:33 +01:00
B. Blechschmidt
3de8b992d4 Merge branch 'ssrlive' into dns-robustness 2023-03-23 13:21:54 +01:00
B. Blechschmidt
c9297124e1 Implement first, unfinished version of DNS support and fix incomplete TCP stream bug
This commit does two things:
First, it implements a first, unfinished version of the virtual DNS
functionality. This feature is incomplete and has known bugs. Since it
needs to be enabled manually, this is not a huge issue so far.
Second, the commit fixes a bug where TCP streams where not properly
relayed, causing TCP connections to stall.
2023-03-23 13:03:01 +01:00
ssrlive
d4eed896bb SocketAddr issues 2023-03-23 20:00:59 +08:00
ssrlive
6fe44f8055 IpProtocol values 2023-03-23 18:31:09 +08:00
ssrlive
4af656039e refine code 2023-03-23 16:47:44 +08:00
B. Blechschmidt
56d0dd9d42 Fix SOCKS5 domain name address type sending 2023-03-22 19:28:48 +01:00
B. Blechschmidt
1a5eeece6f Prepare DNS support 2023-03-22 19:11:28 +01:00
B. Blechschmidt
ca3aadcf1a Use dotenvy instead of unmaintained dotenv and use it for the tests 2023-03-22 18:06:51 +01:00
ssrlive
c82c610c4b .env file support 2023-03-22 17:56:17 +01:00
B. Blechschmidt
3e33244e26 Do not leak secret 2023-03-22 16:30:30 +01:00
B. Blechschmidt
9ae74f10f6 Fix port in README 2023-03-22 16:24:41 +01:00
B. Blechschmidt
4aba996b64 Reflect authentication support in README 2023-03-22 16:07:44 +01:00
ssrlive
e637a55e6a move error handler to a separate module 2023-03-22 15:51:08 +01:00
B. Blechschmidt
5cbb13247f Run tests with GitHub actions 2023-03-22 15:39:08 +01:00