diff --git a/example/client.yaml b/example/client.yaml new file mode 100644 index 0000000..e36f40b --- /dev/null +++ b/example/client.yaml @@ -0,0 +1,19 @@ +run-type: client +local-addr: 127.0.0.1 +local-port: 1080 +remote-addr: your_server +remote-port: 443 +password: + - your_password +ssl: + sni: your-domain-name.com +mux: + enabled: true +router: + enabled: true + bypass: ['geoip:cn', 'geoip:private', 'geosite:cn', 'geosite:geolocation-cn'] + block: ['geosite:category-ads'] + proxy: ['geosite:geolocation-!cn'] + default_policy: proxy + geoip: /usr/share/trojan-go/geoip.dat + geosite: /usr/share/trojan-go/geosite.dat diff --git a/example/server.yaml b/example/server.yaml new file mode 100644 index 0000000..3c400e5 --- /dev/null +++ b/example/server.yaml @@ -0,0 +1,17 @@ +run-type: server +local-addr: 0.0.0.0 +local-port: 443 +remote-addr: 127.0.0.1 +remote-port: 80 +password: + - your_password +ssl: + cert: your_cert.crt + key: your_key.key + sni: your-domain-name.com +router: + enabled: true + block: + - 'geoip:private' + geoip: /usr/share/trojan-go/geoip.dat + geosite: /usr/share/trojan-go/geosite.dat diff --git a/proxy/nat/nat.go b/proxy/nat/nat.go index c03171e..90962cd 100644 --- a/proxy/nat/nat.go +++ b/proxy/nat/nat.go @@ -5,6 +5,7 @@ package nat import ( "context" + "github.com/p4gefau1t/trojan-go/common" "github.com/p4gefau1t/trojan-go/config" "github.com/p4gefau1t/trojan-go/proxy" "github.com/p4gefau1t/trojan-go/proxy/client" @@ -17,9 +18,12 @@ const Name = "NAT" func init() { proxy.RegisterProxyCreator(Name, func(ctx context.Context) (*proxy.Proxy, error) { cfg := config.FromContext(ctx, Name).(*client.Config) + if cfg.Router.Enabled { + return nil, common.NewError("router is not allowed in nat mode") + } ctx, cancel := context.WithCancel(ctx) serverStack := []string{tproxy.Name} - clientStack := client.GenerateClientTree(cfg.TransportPlugin.Enabled, cfg.Mux.Enabled, cfg.Websocket.Enabled, cfg.Shadowsocks.Enabled, cfg.Router.Enabled) + clientStack := client.GenerateClientTree(cfg.TransportPlugin.Enabled, cfg.Mux.Enabled, cfg.Websocket.Enabled, cfg.Shadowsocks.Enabled, false) c, err := proxy.CreateClientStack(ctx, clientStack) if err != nil { cancel()