mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-29 20:43:44 +00:00
Merge pull request #2118 from chenhw2/master
Multipe nameservers support
This commit is contained in:
@@ -121,7 +121,7 @@ Specify destination server address and port for local port forwarding.
|
||||
Only available in tunnel mode.
|
||||
|
||||
-d <addr>::
|
||||
Setup name servers for internal DNS resolver (libudns).
|
||||
Setup name servers for internal DNS resolver (libc-ares).
|
||||
The default server is fetched from /etc/resolv.conf.
|
||||
+
|
||||
Only available in server and manager mode.
|
||||
|
||||
@@ -90,7 +90,7 @@ Enable UDP relay and disable TCP relay.
|
||||
Enable onetime authentication.
|
||||
|
||||
-d <addr>::
|
||||
Setup name servers for internal DNS resolver (libudns).
|
||||
Setup name servers for internal DNS resolver (libc-ares).
|
||||
The default server is fetched from `/etc/resolv.conf`.
|
||||
|
||||
--fast-open::
|
||||
|
||||
@@ -100,7 +100,7 @@ Enable UDP relay and disable TCP relay.
|
||||
Resovle hostname to IPv6 address first.
|
||||
|
||||
-d <addr>::
|
||||
Setup name servers for internal DNS resolver (libudns).
|
||||
Setup name servers for internal DNS resolver (libc-ares).
|
||||
The default server is fetched from '/etc/resolv.conf'.
|
||||
|
||||
--fast-open::
|
||||
|
||||
@@ -10,8 +10,7 @@ ENV SERVER_PORT 8388
|
||||
ENV PASSWORD=
|
||||
ENV METHOD aes-256-cfb
|
||||
ENV TIMEOUT 300
|
||||
ENV DNS_ADDR 8.8.8.8
|
||||
ENV DNS_ADDR_2 8.8.4.4
|
||||
ENV DNS_ADDRS 8.8.8.8,8.8.4.4
|
||||
ENV ARGS=
|
||||
|
||||
COPY . /tmp/repo
|
||||
@@ -51,7 +50,6 @@ CMD exec ss-server \
|
||||
-m $METHOD \
|
||||
-t $TIMEOUT \
|
||||
--fast-open \
|
||||
-d $DNS_ADDR \
|
||||
-d $DNS_ADDR_2 \
|
||||
-d $DNS_ADDRS \
|
||||
-u \
|
||||
$ARGS
|
||||
|
||||
@@ -33,7 +33,7 @@ $ docker run -p 8388:8388 -p 8388:8388/udp -d --restart always shadowsocks/shado
|
||||
```
|
||||
This starts a container of the latest release with all the default settings, which is equivalent to
|
||||
```bash
|
||||
$ ss-server -s 0.0.0.0 -p 8388 -k "$(hostname)" -m aes-256-cfb -t 300 --fast-open -d 8.8.8.8 -d 8.8.4.4 -u
|
||||
$ ss-server -s 0.0.0.0 -p 8388 -k "$(hostname)" -m aes-256-cfb -t 300 --fast-open -d "8.8.8.8,8.8.4.4" -u
|
||||
```
|
||||
> **Note**: It's the hostname in the container that is used as the password, not that of the host.
|
||||
|
||||
@@ -61,7 +61,7 @@ Besides `PASSWORD`, the image also defines the following environment variables t
|
||||
* `SERVER_ADDR`: the IP/domain to bind to, defaults to `0.0.0.0`
|
||||
* `METHOD`: encryption method to use, defaults to `aes-256-cfb`
|
||||
* `TIMEOUT`: defaults to `300`
|
||||
* `DNS_ADDR`, `DNS_ADDR_2`: DNS servers to redirect NS lookup requests to, defaults to `8.8.8.8` and `8.8.4.4`
|
||||
* `DNS_ADDRS`: DNS servers to redirect NS lookup requests to, defaults to `8.8.8.8,8.8.4.4`
|
||||
|
||||
Additional arguments supported by `ss-server` can be passed with the environment variable `ARGS`, for instance to start in verbose mode:
|
||||
```bash
|
||||
|
||||
+6
-10
@@ -208,9 +208,9 @@ construct_command_line(struct manager_ctx *manager, struct server *server)
|
||||
int len = strlen(cmd);
|
||||
snprintf(cmd + len, BUF_SIZE - len, " --plugin-opts \"%s\"", manager->plugin_opts);
|
||||
}
|
||||
for (i = 0; i < manager->nameserver_num; i++) {
|
||||
if (manager->nameservers) {
|
||||
int len = strlen(cmd);
|
||||
snprintf(cmd + len, BUF_SIZE - len, " -d %s", manager->nameservers[i]);
|
||||
snprintf(cmd + len, BUF_SIZE - len, " -d \"%s\"", manager->nameservers);
|
||||
}
|
||||
for (i = 0; i < manager->host_num; i++) {
|
||||
int len = strlen(cmd);
|
||||
@@ -871,8 +871,7 @@ main(int argc, char **argv)
|
||||
int server_num = 0;
|
||||
char *server_host[MAX_REMOTE_NUM];
|
||||
|
||||
char *nameservers[MAX_DNS_NUM + 1];
|
||||
int nameserver_num = 0;
|
||||
char *nameservers = NULL;
|
||||
|
||||
jconf_t *conf = NULL;
|
||||
|
||||
@@ -953,9 +952,7 @@ main(int argc, char **argv)
|
||||
iface = optarg;
|
||||
break;
|
||||
case 'd':
|
||||
if (nameserver_num < MAX_DNS_NUM) {
|
||||
nameservers[nameserver_num++] = optarg;
|
||||
}
|
||||
nameservers = optarg;
|
||||
break;
|
||||
case 'a':
|
||||
user = optarg;
|
||||
@@ -1024,8 +1021,8 @@ main(int argc, char **argv)
|
||||
if (reuse_port == 0) {
|
||||
reuse_port = conf->reuse_port;
|
||||
}
|
||||
if (conf->nameserver != NULL) {
|
||||
nameservers[nameserver_num++] = conf->nameserver;
|
||||
if (nameservers == NULL) {
|
||||
nameservers = conf->nameserver;
|
||||
}
|
||||
if (mode == TCP_ONLY) {
|
||||
mode = conf->mode;
|
||||
@@ -1118,7 +1115,6 @@ main(int argc, char **argv)
|
||||
manager.hosts = server_host;
|
||||
manager.host_num = server_num;
|
||||
manager.nameservers = nameservers;
|
||||
manager.nameserver_num = nameserver_num;
|
||||
manager.mtu = mtu;
|
||||
manager.plugin = plugin;
|
||||
manager.plugin_opts = plugin_opts;
|
||||
|
||||
+1
-2
@@ -56,8 +56,7 @@ struct manager_ctx {
|
||||
char *manager_address;
|
||||
char **hosts;
|
||||
int host_num;
|
||||
char **nameservers;
|
||||
int nameserver_num;
|
||||
char *nameservers;
|
||||
int mtu;
|
||||
int ipv6first;
|
||||
#ifdef HAVE_SETRLIMIT
|
||||
|
||||
Reference in New Issue
Block a user