-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
122 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
The MIT License (MIT) | ||
|
||
Copyright (c) 2017 Hiroyuki Wada | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
# go-tproxy | ||
|
||
Transparent proxy servers for HTTP, HTTPS, DNS and TCP. | ||
This repository is heavily under development. | ||
|
||
## Description | ||
|
||
**go-tproxy** provides transparent proxy servers for HTTP, HTTPS, DNS and TCP with single binary. | ||
Nothing needs to setup many tools. Nothing needs to configure iptables. | ||
**go-tproxy** will start multiple proxy servers for these protocols. | ||
Futheremore, it will configure iptables automatically. | ||
|
||
## Requirement | ||
|
||
**go-tproxy** supports only Linux iptables. | ||
|
||
## Install | ||
|
||
### Binaly install | ||
Download from [Releases page](https://github.com/wadahiro/go-tproxy/releases). | ||
|
||
### Source install | ||
Use Go 1.8. | ||
|
||
``` | ||
go get -u github.com/wadahiro/go-tproxy/... | ||
``` | ||
|
||
## Usage | ||
|
||
``` | ||
Usage: | ||
go-tproxy [options] | ||
Options: | ||
-dns-endpoint string | ||
DNS-over-HTTPS endpoint URL (default "https://dns.google.com/resolve") | ||
-dns-proxy-listen [host]:port | ||
DNS Proxy listen address, as [host]:port (default ":3131") | ||
-dns-tcp | ||
DNS Listen on TCP (default true) | ||
-dns-udp | ||
DNS Listen on UDP (default true) | ||
-http-proxy-listen [host]:port | ||
HTTP Proxy listen address, as [host]:port (default ":3129") | ||
-https-proxy-listen [host]:port | ||
HTTPS Proxy listen address, as [host]:port (default ":3130") | ||
-loglevel string | ||
Log level, one of: debug, info, warn, error, fatal, panic (default "info") | ||
-private-dns string | ||
Private DNS address for no_proxy targets (IP[:port]) | ||
-tcp-proxy-dports port1,port2,... | ||
TCP Proxy dports, as port1,port2,... (default "22") | ||
-tcp-proxy-listen [host]:port | ||
TCP Proxy listen address, as [host]:port (default ":3128") | ||
``` | ||
|
||
Proxy configuration is used from standard environment variables, `http_proxy`, `https_proxy` and `no_proxy`. | ||
Also You can use **IP Address**, **CIDR**, **Suffix Domain Name** in `no_proxy`. | ||
|
||
### Example | ||
|
||
``` | ||
# Set your proxy environment | ||
export http_proxy=http://foo:[email protected]:3128 | ||
# Set no_proxy if you need to access directly for internal | ||
export no_proxy=example.org,192.168.0.0/24 | ||
# Start go-tproxy with admin privileges(sudo) | ||
sudo go-tproxy -private-dns 192.168.0.100 | ||
``` | ||
|
||
For testing, using docker is easy way. Now, you can access to google from docker container with no proxy configuration as follows. | ||
|
||
``` | ||
docker run --rm -it centos curl http://www.google.com | ||
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> | ||
<TITLE>302 Moved</TITLE></HEAD><BODY> | ||
<H1>302 Moved</H1> | ||
The document has moved | ||
<A HREF="http://www.google.co.jp/?gfe_rd=cr&dcr=0&ei=GCKtWbD0AaLEXuTmr7gK">here</A>. | ||
</BODY></HTML> | ||
``` | ||
|
||
## Current Limitation | ||
|
||
* HTTP proxy: `no_proxy` only works with IP Address and CIDR if your http client doesnt't add Host header, e.g., HTTP 1.0. | ||
* HTTPS proxy: `no_proxy` only works with IP Address and CIDR if your https client doesn't support [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication). | ||
* TCP proxy: `no_proxy` only works with IP Address and CIDR. | ||
|
||
## Licence | ||
|
||
Licensed under the [MIT](/LICENSE) license. | ||
|
||
## Author | ||
|
||
[wadahiro](https://github.com/wadahiro) | ||
|