介绍几款 Docker 镜像

技术 秋水逸冰 83340 次围观 86 次吐槽

Docker 是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在 Linux 操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。
Docker 利用 Linux 核心中的资源分脱机制,例如 cgroups,以及 Linux 核心名字空间(name space),来创建独立的软件容器(containers)。这可以在单一 Linux 实体下运作,避免启动一个虚拟机造成的额外负担。
简单概括起来就是,Docker 是个容器,什么都能往里塞,你也可以理解为是一个轻量化的虚拟机。
使用 Docker 的好处就是对当前系统的环境没有破坏性,基本上一款镜像可以跑在任意包含了 Docker 的机器上,可以说是十分方便了。
本文主要介绍一下我在学习 Docker 的过程中制作的几款镜像,以及使用方法。

安装并启动 Docker

操作系统内核大于等于 3.10 的都可以安装最新版 Docker,可以直接运行官方的安装脚本一键安装。
执行脚本方法如下:

wget -qO- get.docker.com | bash 


安装完成后,运行下面的命令,验证是否安装成功。

docker version 


启动 Docker

systemctl start docker 


查看 Docker 启动状态

systemctl status docker


允许 Docker 开机自启

systemctl enable docker 

Shadowsocks-libev Docker Image

这是我第一款制作出来的 Docker 镜像,基于官方 debian:buster 镜像制作,直接利用 apt-get 安装好 shadowsocks-libev 和 simple-obfs 即可。
该容器在启动时依赖于读取宿主机里的配置文件,因此在启动该镜像时配合不同的 config 文件,就能开启任意个 Docker ,也就是所谓的多端口。
把配置文件放在宿主机里,是基于这样的考量:随时在宿主机里修改配置的端口,密码,加密方式等信息,然后只需重启容器,无需再次创建新的容器。

支持的 Tags 及 Dockerfile

latest (Dockerfile)
alpine (Dockerfile)

拉取镜像

docker pull teddysun/shadowsocks-libev


或者拉取以 alpine 镜像制作的,其特点就是文件容量非常小

docker pull teddysun/shadowsocks-libev:alpine 


创建 config 文件

比如在目录 /etc/shadowsocks-libev 下创建 config.json,完整路径也就是 /etc/shadowsocks-libev/config.json
范例内容如下:

{
    "server":"0.0.0.0",
    "server_port":9000,
    "password":"password0",
    "timeout":300,
    "method":"aes-256-gcm",
    "fast_open":true,
    "nameserver":"8.8.8.8",
    "mode":"tcp_and_udp"
}


如果你想同时开启 simple-obfs,那么配置文件范例如下:

{
    "server":"0.0.0.0",
    "server_port":9000,
    "password":"password0",
    "timeout":300,
    "method":"aes-256-gcm",
    "fast_open":true,
    "nameserver":"8.8.8.8",
    "mode":"tcp_and_udp",
    "plugin":"obfs-server",
    "plugin_opts":"obfs=tls"
} 


配置文件里面所有选项的含义,可以参考这个链接

启动容器
在上面这个范例里,定义的端口是 9000,那么在启动容器时就需要将 9000 端口映射到宿主机的对外端口上。
启动命令:

docker run -d -p 9000:9000 -p 9000:9000/udp --name ss-libev -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev 


docker run:开始运行一个容器。
-d 参数:容器以后台运行并输出容器 ID。
-p 参数:容器的 9000 端口映射到本机的 9000 端口。默认是映射 TCP,当需要映射 UDP 时,那就再追加一次 UDP 的映射。冒号后面是容器端口,冒号前面是宿主机端口,可以写成一致,也可以不一致。
–name 参数:给容器分配一个识别符,方便将来的启动,停止,删除等操作。
-v 参数:挂载卷(volume),冒号后面是容器的路径,冒号前面是宿主机的路径,可以写成一致,也可以不一致。
teddysun/shadowsocks-libev:这是拉取回来的镜像路径。

当然,这里也可以启动 Tag 为 alpine 的镜像命令:

docker run -d -p 9000:9000 -p 9000:9000/udp --name ss-libev -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev:alpine 


注意:此处仅作为演示,不能同时执行上面的这两个启动命令,因为端口都是 9000,产生冲突了。一般我是推荐选 Tag 为 alpine 的镜像的,因为文件的体积会相对比较小。

查看容器
利用如下命令可以查看所有已创建的 Docker 容器并显示容器的大小等信息:

docker ps -as 


停止容器
利用如下命令可以停止正在运行中的容器:

docker stop $name


此处的 $name 就是在启动容器那一步定义的容器的识别符,比如范例的 ss-libev

启动容器
利用如下命令可以启动已经停止的容器:

docker start $name


此处的 $name 就是在启动容器那一步定义的容器的识别符,比如范例的 ss-libev

ShadowsocksR Docker Image

这是我第二款制作出来的 Docker 镜像,基于官方 debian:stretch 镜像制作,安装的是 Github 上目前最新的版本
该容器在启动时依赖于读取宿主机里的配置文件,因此在启动该镜像时配合不同的 config 文件,就能开启任意个 Docker ,也就是所谓的多端口。
把配置文件放在宿主机里,是基于这样的考量:随时在宿主机里修改配置的端口,密码,加密方式等信息,然后只需重启容器,无需再次创建新的容器。

支持的 Tags 及 Dockerfile

3.2.2, latest (Dockerfile)
alpine (Dockerfile)

拉取镜像

docker pull teddysun/shadowsocks-r


或者拉取基于 python:3.6-alpine 镜像制作的

docker pull teddysun/shadowsocks-r:alpine 


创建 config 文件

比如在目录 /etc/shadowsocks-r 下创建 config.json,完整路径也就是 /etc/shadowsocks-r/config.json
范例内容如下:

{
    "server":"0.0.0.0",
    "server_ipv6":"::",
    "server_port":9000,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"password0",
    "timeout":120,
    "method":"aes-256-cfb",
    "protocol":"origin",
    "protocol_param":"",
    "obfs":"plain",
    "obfs_param":"",
    "redirect":"",
    "dns_ipv6":false,
    "fast_open":true,
    "workers":1
} 


ShadowsocksR 协议插件文档的含义,可以参考这个链接

启动容器

在上面这个范例里,定义的端口是 9000,那么在启动容器时就需要将 9000 端口映射到宿主机的对外端口上。
启动命令:

docker run -d -p 9000:9000 -p 9000:9000/udp --name ssr -v /etc/shadowsocks-r:/etc/shadowsocks-r teddysun/shadowsocks-r 


启动 Tag 为 alpine 的镜像命令:

docker run -d -p 9000:9000 -p 9000:9000/udp --name ssr -v /etc/shadowsocks-r:/etc/shadowsocks-r teddysun/shadowsocks-r:alpine 


注意:此处仅作为演示,不能同时执行上面的这两个启动命令,因为端口都是 9000,产生冲突了。一般我是推荐选 Tag 为 alpine 的镜像的,因为文件的体积会相对比较小。

L2TP/IPsec VPN Server Docker Image

这是我第三款制作出来的 Docker 镜像,基于官方 debian:stretch 镜像制作,使用了最新版 libreswan-3.27 和 xl2tpd-1.3.12,支持 L2TP/IPsec PSK 和 IPSec Xauth PSK 两种连接方式。
1,基于 debian:buster 镜像制作,使用了最新版 libreswan-3.27 和 xl2tpd-1.3.12;
2,基于 alpine:latest 镜像制作,使用了 alpine 自带的 libreswan-3.27 和 xl2tpd-1.3.14;
注意1:Android 版本小于或等于 7.0 时,建议选择 IPSec Xauth PSK (Cisco IPsec) 模式连接。如下图所示:

注意2:同一个 NAT 下多用户连接,请选择 IPSec Xauth PSK (Cisco IPsec) 模式连接。

该镜像在启动之前,需事先定义环境变量文件 /etc/l2tp.env,其内容具体参考以下的说明。
同时,该镜像具备自主管理用户的特点,一个简单命令即可增删改查用户账号。

支持的 Tags 及 Dockerfile

latest (Dockerfile)
alpine (Dockerfile)

拉取镜像

docker pull teddysun/l2tp


docker pull teddysun/l2tp:alpine


创建启动环境参数文件

比如是 /etc/l2tp.env,该文件内的各个变量定义如下:

VPN_IPSEC_PSK=teddysun.com
VPN_USER=vpnuser
VPN_PASSWORD=vpnpassword
VPN_PUBLIC_IP=
VPN_L2TP_NET=
VPN_L2TP_LOCAL=
VPN_L2TP_REMOTE=
VPN_XAUTH_NET=
VPN_XAUTH_REMOTE=
VPN_DNS1=
VPN_DNS2= 


VPN_IPSEC_PSK:预共享密钥
VPN_USER:默认的登录用户名
VPN_PASSWORD:默认的登录用户密码
VPN_PUBLIC_IP:指定公网 IP 地址,当你的 VPS 有多个公网 IP 时,可能需要手动指定一下
VPN_L2TP_NET:内网 L2TP 网段范围,默认为 192.168.18.0/24,一般此处留空即可
VPN_L2TP_LOCAL:内网 L2TP 网关 IP,默认为 192.168.18.1,一般此处留空即可
VPN_L2TP_REMOTE:内网 L2TP 网段分配给连接的 IP 段,默认为 192.168.18.10-192.168.18.250,一般此处留空即可
VPN_XAUTH_NET:内网 XAUTH 网段范围,默认为 192.168.20.0/24,一般此处留空即可
VPN_XAUTH_REMOTE:内网 XAUTH 网段分配给连接的 IP 段,默认为 192.168.20.10-192.168.20.250,一般此处留空即可
VPN_DNS1:默认 DNS 服务器,8.8.8.8,一般此处留空即可
VPN_DNS2:默认 DNS 服务器,8.8.4.4,一般此处留空即可

启动容器

在这个范例里,需要将 500 和 4500 端口的 UDP 映射到宿主机的对外端口上。

启动命令1:

docker run -d --privileged -p 500:500/udp -p 4500:4500/udp --name l2tp --env-file /etc/l2tp.env -v /lib/modules:/lib/modules teddysun/l2tp


启动命令2:

docker run -d --privileged -p 500:500/udp -p 4500:4500/udp --name l2tp --env-file /etc/l2tp.env -v /lib/modules:/lib/modules teddysun/l2tp:alpine


查看启动日志

docker logs l2tp

此处的 l2tp,是指在启动时定义的容器识别符,–name 参数后的名字。
输出的日志参考如下:

L2TP/IPsec VPN Server with the Username and Password is below: 
Server IP: Your Server public IP
IPSec PSK: IPSec PSK (pre-shared key)
Username : VPN username
Password : VPN password 
Redirecting to: /etc/init.d/ipsec start
Starting pluto IKE daemon for IPsec: Initializing NSS database 
xl2tpd[1]: Not looking for kernel SAref support.
xl2tpd[1]: Using l2tp kernel support.
xl2tpd[1]: xl2tpd version xl2tpd-1.3.12 started on 1d20eaecd9f2 PID:1
xl2tpd[1]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
xl2tpd[1]: Forked by Scott Balmos and David Stipp, (C) 2001
xl2tpd[1]: Inherited by Jeff McAdams, (C) 2002
xl2tpd[1]: Forked again by Xelerance (www.xelerance.com) (C) 2006-2016
xl2tpd[1]: Listening on IP address 0.0.0.0, port 1701 


当然,你也可以查看一下 ipsec status 命令的输出,命令如下:

docker exec -it l2tp ipsec status

此处的 l2tp,是指在启动时定义的容器识别符,–name 参数后的名字。

管理 VPN 用户

列出全部用户及其密码

docker exec -it l2tp l2tpctl -l


新增一个用户

docker exec -it l2tp l2tpctl -a


删除一个用户

docker exec -it l2tp l2tpctl -d


修改一个用户的密码

docker exec -it l2tp l2tpctl -m


打印容器里 libreswan 和 xl2tpd 的版本信息

docker exec -it l2tp l2tpctl -v 


打印控制脚本 l2tpctl 的帮助信息

docker exec -it l2tp l2tpctl -h 


需要注意的是,容器一旦被删除重建,或者停止后重新启动,都会导致 VPN 用户信息的丢失,需要通过以上的命令再次创建。

Windows 10 下连接 L2TP VPN

首先,参考下图的设置,将 VPN 的连接信息稍微修改一下。

修改 VPN 属性,如图所示。

一般我们都是连接到家用路由器上的,也就是说,我们的网络一般都是处于 NAT 状态下,因此还需要改一下注册表,根据这个链接,修改注册表的信息,修改完成后,重启 Windows 即可。

参考链接

https://hub.docker.com/r/teddysun/shadowsocks-libev/
https://hub.docker.com/r/teddysun/shadowsocks-r/
https://hub.docker.com/r/teddysun/l2tp/

转载请注明:秋水逸冰 » 介绍几款 Docker 镜像

发表我的评论
取消评论

请输入正确答案后提交评论 *

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (86)

  1. 秋大,你好。我安装了L2TP/IPsec VPN Server Docker Image, 安卓手机版本是9的, IPSec Xauth PSK连接方式可以连接上, 但是L2TP/IPsec PSK连接方式连接不上。另外主要的PC端怎么都连接不上。我系统是windows 10 64位版本的,按你提示的微软网站我把注册表信息添加的32位64位的值每个1和2都试过,都连接不上,提示L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误。 请秋大看看是什么问题?谢谢
    ndd2天前回复
  2. 秋大你好,我想问下我用docker安装ss-libev+obfs后总是显示在restarting是什么原因?我把端口设置在443,ufw中也开放了443端口,看了下docker logs显示ERROR: [udp] bind: Permission denied和ERROR: failed to listen on any address,请问还需要做其他设置吗?
    startup2周前 (2019-10-05)回复
    • 设置低于 1024 端口需要 root 权限,请检查一下你确实是用 root 权限启动的 docker
      秋水逸冰2周前 (2019-10-05)回复
      • 我是用root账户登录之后按教程运行的命令(除了把端口改成443:443)QAQ
        startup2周前 (2019-10-05)回复
        • 也有可能是本机的 443 端口被其他程序占用了
          秋水逸冰2周前 (2019-10-06)回复
  3. 大佬,我用你的一键脚本配置l2tp连接正常,但是用Docker怎样都连不上,windows提示远程服务器未响应,确定端口全开了,实在找不到原因,麻烦您帮忙看下。。 000 using kernel interface: netkey 000 interface lo/lo [email protected] 000 interface lo/lo [email protected] 000 interface eth0/eth0 [email protected] 000 interface eth0/eth0 [email protected] 000 000 000 fips mode=disabled; 000 SElinux=disabled 000 seccomp=unsupported 000 000 config setup options: 000 000 configdir=/etc, configfile=/etc/ipsec.conf, secrets=/etc/ipsec.secrets, ipsecdir=/etc/ipsec.d 000 nssdir=/var/lib/ipsec/nss, dumpdir=/run/pluto, statsbin=unset 000 dnssec-rootkey-file=/usr/share/dns/root.key, dnssec-trusted= 000 sbindir=/usr/sbin, libexecdir=/usr/lib/ipsec 000 pluto_version=3.27, pluto_vendorid=OE-Libreswan-3.27 000 nhelpers=0, uniqueids=no, dnssec-enable=yes, perpeerlog=no, logappend=yes, logip=yes, shuntlifetime=900s, xfrmlifetime=300s 000 ddos-cookies-threshold=50000, ddos-max-halfopen=25000, ddos-mode=auto 000 ikeport=500, ikebuf=0, msg_errqueue=yes, strictcrlpolicy=no, crlcheckinterval=0, listen=, nflog-all=0 000 ocsp-enable=no, ocsp-strict=no, ocsp-timeout=2, ocsp-uri= 000 ocsp-trust-name= 000 ocsp-cache-size=1000, ocsp-cache-min-age=3600, ocsp-cache-max-age=86400, ocsp-method=get 000 secctx-attr-type=32001 000 debug: 000 000 nat-traversal=yes, keep-alive=20, nat-ikeport=4500 000 virtual-private (%priv): 000 - allowed subnets: 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12 000 - excluded subnets: 192.168.18.0/24, 192.168.20.0/24 000 000 Kernel algorithms supported: 000 000 algorithm ESP encrypt: name=3DES_CBC, keysizemin=192, keysizemax=192 000 algorithm ESP encrypt: name=AES_CBC, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=AES_CCM_12, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=AES_CCM_16, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=AES_CCM_8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=AES_CTR, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=AES_GCM_12, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=AES_GCM_16, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=AES_GCM_8, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=CAMELLIA_CBC, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=CHACHA20_POLY1305, keysizemin=256, keysizemax=256 000 algorithm ESP encrypt: name=NULL, keysizemin=0, keysizemax=0 000 algorithm ESP encrypt: name=NULL_AUTH_AES_GMAC, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=SERPENT_CBC, keysizemin=128, keysizemax=256 000 algorithm ESP encrypt: name=TWOFISH_CBC, keysizemin=128, keysizemax=256 000 algorithm AH/ESP auth: name=AES_CMAC_96, key-length=128 000 algorithm AH/ESP auth: name=AES_XCBC_96, key-length=128 000 algorithm AH/ESP auth: name=HMAC_MD5_96, key-length=128 000 algorithm AH/ESP auth: name=HMAC_SHA1_96, key-length=160 000 algorithm AH/ESP auth: name=HMAC_SHA2_256_128, key-length=256 000 algorithm AH/ESP auth: name=HMAC_SHA2_256_TRUNCBUG, key-length=256 000 algorithm AH/ESP auth: name=HMAC_SHA2_384_192, key-length=384 000 algorithm AH/ESP auth: name=HMAC_SHA2_512_256, key-length=512 000 algorithm AH/ESP auth: name=NONE, key-length=0 000 000 IKE algorithms supported: 000 000 algorithm IKE encrypt: v1id=5, v1name=OAKLEY_3DES_CBC, v2id=3, v2name=3DES, blocksize=8, keydeflen=192 000 algorithm IKE encrypt: v1id=8, v1name=OAKLEY_CAMELLIA_CBC, v2id=23, v2name=CAMELLIA_CBC, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=-1, v1name=n/a, v2id=20, v2name=AES_GCM_C, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=-1, v1name=n/a, v2id=19, v2name=AES_GCM_B, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=-1, v1name=n/a, v2id=18, v2name=AES_GCM_A, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=13, v1name=OAKLEY_AES_CTR, v2id=13, v2name=AES_CTR, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=7, v1name=OAKLEY_AES_CBC, v2id=12, v2name=AES_CBC, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=65004, v1name=OAKLEY_SERPENT_CBC, v2id=65004, v2name=SERPENT_CBC, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=65005, v1name=OAKLEY_TWOFISH_CBC, v2id=65005, v2name=TWOFISH_CBC, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=65289, v1name=OAKLEY_TWOFISH_CBC_SSH, v2id=65289, v2name=TWOFISH_CBC_SSH, blocksize=16, keydeflen=128 000 algorithm IKE encrypt: v1id=-1, v1name=n/a, v2id=28, v2name=CHACHA20_POLY1305, blocksize=16, keydeflen=256 000 algorithm IKE PRF: name=HMAC_MD5, hashlen=16 000 algorithm IKE PRF: name=HMAC_SHA1, hashlen=20 000 algorithm IKE PRF: name=HMAC_SHA2_256, hashlen=32 000 algorithm IKE PRF: name=HMAC_SHA2_384, hashlen=48 000 algorithm IKE PRF: name=HMAC_SHA2_512, hashlen=64 000 algorithm IKE PRF: name=AES_XCBC, hashlen=16 000 algorithm IKE DH Key Exchange: name=MODP1024, bits=1024 000 algorithm IKE DH Key Exchange: name=MODP1536, bits=1536 000 algorithm IKE DH Key Exchange: name=MODP2048, bits=2048 000 algorithm IKE DH Key Exchange: name=MODP3072, bits=3072 000 algorithm IKE DH Key Exchange: name=MODP4096, bits=4096 000 algorithm IKE DH Key Exchange: name=MODP6144, bits=6144 000 algorithm IKE DH Key Exchange: name=MODP8192, bits=8192 000 algorithm IKE DH Key Exchange: name=DH19, bits=512 000 algorithm IKE DH Key Exchange: name=DH20, bits=768 000 algorithm IKE DH Key Exchange: name=DH21, bits=1056 000 algorithm IKE DH Key Exchange: name=DH31, bits=256 000 000 stats db_ops: {curr_cnt, total_cnt, maxsz} :context={0,0,0} trans={0,0,0} attrs={0,0,0} 000 000 Connection list: 000 000 "l2tp-psk": 172.17.0.2[#IP]:17/1701---172.17.0.1...%any:17/%any; unrouted; eroute owner: #0 000 "l2tp-psk": oriented; my_ip=unset; their_ip=unset; my_updown=ipsec _updown; 000 "l2tp-psk": xauth us:none, xauth them:none, my_username=[any]; their_username=[any] 000 "l2tp-psk": our auth:secret, their auth:secret 000 "l2tp-psk": modecfg info: us:none, them:none, modecfg policy:push, dns:unset, domains:unset, banner:unset, cat:unset; 000 "l2tp-psk": labeled_ipsec:no; 000 "l2tp-psk": policy_label:unset; 000 "l2tp-psk": ike_life: 3600s; ipsec_life: 28800s; replay_window: 32; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 5; 000 "l2tp-psk": retransmit-interval: 500ms; retransmit-timeout: 60s; 000 "l2tp-psk": initial-contact:no; cisco-unity:no; fake-strongswan:no; send-vendorid:no; send-no-esp-tfc:no; 000 "l2tp-psk": policy: PSK+ENCRYPT+SHA2_TRUNCBUG+DONT_REKEY+IKEV1_ALLOW+IKEV2_ALLOW+SAREF_TRACK+IKE_FRAG_ALLOW+ESN_NO; 000 "l2tp-psk": conn_prio: 32,32; interface: eth0; metric: 0; mtu: unset; sa_prio:auto; sa_tfc:none; 000 "l2tp-psk": nflog-group: unset; mark: unset; vti-iface:unset; vti-routing:no; vti-shared:no; nic-offload:auto; 000 "l2tp-psk": our idtype: ID_IPV4_ADDR; our id=#IP; their idtype: %none; their id=(none) 000 "l2tp-psk": dpd: action:clear; delay:30; timeout:120; nat-t: encaps:yes; nat_keepalive:yes; ikev1_natt:both 000 "l2tp-psk": newest ISAKMP SA: #0; newest IPsec SA: #0; 000 "l2tp-psk": IKE algorithms: 3DES_CBC-HMAC_SHA1-MODP2048, 3DES_CBC-HMAC_SHA1-MODP1536, 3DES_CBC-HMAC_SHA2_256-MODP2048, 3DES_CBC-HMAC_SHA2_256-MODP1536, AES_CBC-HMAC_SHA1-MODP2048, AES_CBC-HMAC_SHA1-MODP1536, AES_CBC-HMAC_SHA1-MODP1024, AES_CBC-HMAC_SHA2_256-MODP2048, AES_CBC-HMAC_SHA2_256-MODP1536, AES_CBC-HMAC_SHA2_256-MODP1024 000 "l2tp-psk": ESP algorithms: 3DES_CBC-HMAC_SHA1_96, 3DES_CBC-HMAC_SHA2_256_128, AES_CBC-HMAC_SHA1_96, AES_CBC-HMAC_SHA2_256_128, AES_CBC_256-HMAC_SHA2_512_256 000 "xauth-psk": 0.0.0.0/0===172.17.0.2[#IP,MS+XS+S=C]---172.17.0.1...%any[+MC+XC+S=C]; unrouted; eroute owner: #0 000 "xauth-psk": oriented; my_ip=unset; their_ip=unset; my_updown=ipsec _updown; 000 "xauth-psk": xauth us:server, xauth them:client, xauthby:file; my_username=[any]; their_username=[any] 000 "xauth-psk": our auth:secret, their auth:secret 000 "xauth-psk": modecfg info: us:server, them:client, modecfg policy:pull, dns:8.8.8.8,, domains:unset, banner:unset, cat:unset; 000 "xauth-psk": labeled_ipsec:no; 000 "xauth-psk": policy_label:unset; 000 "xauth-psk": ike_life: 3600s; ipsec_life: 28800s; replay_window: 32; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 5; 000 "xauth-psk": retransmit-interval: 500ms; retransmit-timeout: 60s; 000 "xauth-psk": initial-contact:no; cisco-unity:yes; fake-strongswan:no; send-vendorid:no; send-no-esp-tfc:no; 000 "xauth-psk": policy: PSK+ENCRYPT+TUNNEL+SHA2_TRUNCBUG+DONT_REKEY+XAUTH+MODECFG_PULL+IKEV1_ALLOW+SAREF_TRACK+IKE_FRAG_ALLOW+ESN_NO; 000 "xauth-psk": conn_prio: 0,32; interface: eth0; metric: 0; mtu: unset; sa_prio:auto; sa_tfc:none; 000 "xauth-psk": nflog-group: unset; mark: unset; vti-iface:unset; vti-routing:no; vti-shared:no; nic-offload:auto; 000 "xauth-psk": our idtype: ID_IPV4_ADDR; our id=2344; their idtype: %none; their id=(none) 000 "xauth-psk": dpd: action:clear; delay:30; timeout:120; nat-t: encaps:yes; nat_keepalive:yes; ikev1_natt:both 000 "xauth-psk": newest ISAKMP SA: #0; newest IPsec SA: #0; 000 "xauth-psk": IKE algorithms: 3DES_CBC-HMAC_SHA1-MODP2048, 3DES_CBC-HMAC_SHA1-MODP1536, 3DES_CBC-HMAC_SHA2_256-MODP2048, 3DES_CBC-HMAC_SHA2_256-MODP1536, AES_CBC-HMAC_SHA1-MODP2048, AES_CBC-HMAC_SHA1-MODP1536, AES_CBC-HMAC_SHA1-MODP1024, AES_CBC-HMAC_SHA2_256-MODP2048, AES_CBC-HMAC_SHA2_256-MODP1536, AES_CBC-HMAC_SHA2_256-MODP1024 000 "xauth-psk": ESP algorithms: 3DES_CBC-HMAC_SHA1_96, 3DES_CBC-HMAC_SHA2_256_128, AES_CBC-HMAC_SHA1_96, AES_CBC-HMAC_SHA2_256_128, AES_CBC_256-HMAC_SHA2_512_256 000 000 Total IPsec connections: loaded 2, active 0 000 000 State Information: DDoS cookies not required, Accepting new IKE connections 000 IKE SAs: total(0), half-open(0), open(0), authenticated(0), anonymous(0) 000 IPsec SAs: total(0), authenticated(0), anonymous(0) 000
    z2个月前 (2019-08-22)回复
  4. ss/ssr 无法成功映射端口 AWS/lightsail CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8fa71a511428 teddysun/shadowsocks-r:alpine "/usr/local/shadowso…" 8 seconds ago Exited (1) 7 seconds ago ssr
    wq2个月前 (2019-08-17)回复
    • 跟端口没多大关系,请检查你的配置文件
      秋水逸冰2个月前 (2019-08-18)回复
  5. 楼主你好,现在ss-libev好像官方更新了,请问docker怎么同步更新呢?
    ben3个月前 (2019-07-09)回复
  6. 启动正常,连ipsec可以连上但无法代理上网。l2tp不能连。 查看systemctl status firewalld发现如下错误,重启firewall和docker均无效,请问大侠如何拯救? Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?). Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -p udp -d 0/0 --dport 4500 -j DNAT --to-destination 172.17.0.2:4500 ! -i docker0' failed: iptables: No chain/target/match by that name. Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER ! -i docker0 -o docker0 -p udp -d 172.17.0.2 --dport 4500 -j ACCEPT' failed: iptables: Bad rule (does a matching rule exist in that chain?). Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p udp -s 172.17.0.2 -d 172.17.0.2 --dport 4500 -j MASQUERADE' failed: iptables: No chain/target/match by that name. Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -p udp -d 0/0 --dport 500 -j DNAT --to-destination 172.17.0.2:500 ! -i docker0' failed: iptables: No chain/target/match by that name. Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER ! -i docker0 -o docker0 -p udp -d 172.17.0.2 --dport 500 -j ACCEPT' failed: iptables: Bad rule (does a matching rule exist in that chain?). Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p udp -s 172.17.0.2 -d 172.17.0.2 --dport 500 -j MASQUERADE' failed: iptables: No chain/target/match by that name. Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -n -L DOCKER-USER' failed: iptables: No chain/target/match by that name. Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER-USER -j RETURN' failed: iptables: Bad rule (does a matching rule exist in that chain?). Jun 28 17:53:42 vultr.guest firewalld[15080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-USER' failed: iptables: No chain/target/match by that name.
    气死牛4个月前 (2019-06-29)回复
    • 宿主机上的对应端口 500 和 4500 也要放开才行……
      秋水逸冰4个月前 (2019-07-01)回复
  7. 请问ss-libev同时监听IPV4与IPV6怎么配置
    sail4个月前 (2019-06-26)回复
  8. 我在搬瓦工上买了一个vps服务器,分配了一个ipv4地址,进入本人的搬瓦工vps服务器控制面板,为我的vps服务器安装了64位Ubuntu 18.04系统,安装成功后我用Win10系统笔记本上的Xshell软件远程root登录服务器Ubuntu系统,在Ubuntu 18.04系统上安装了最新的Docker CE,安装成功后输入docker pull teddysun/shadowsocks-libev命令,下载teddysun/shadowsocks-libev镜像,输入docker images命令确认镜像下载成功后,我进入Ubuntu 18.04系统下/etc/目录,发现没有shadowsocks-libev文件夹,然后创建shadowsocks-libev文件夹,然后进入Ubuntu 18.04系统下/etc/shadowsocks-libev/目录下创建config.json文件,打开此config.json文件后把范例内容复制进去并进行保存,退出后,输入docker run -d -p 9000:9000 -p 9000:9000/udp --name ss-libev -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev命令,完成后输入docker ps命令后发现ss-libev容器没有运行,输入docker ps -a命令后发现ss-libev容器其实已经创建,然后输入docker start ss-libev命令重新启动运行容器,再输入docker ps命令后发现ss-libev容器还是没有运行,请教秋大,问题一: 创建的config.json文件是Ubuntu 18.04系统目录下/etc/shadowsocks-libev/config.json文件?还是Docker目录下的文件?或者是ss-libev容器目录下的/etc/shadowsocks-libev/config.json文件?问题二:config.json文件内容"server":"0.0.0.0",是否要变更为"server":"vps服务器ip地址",?另外自己下载Ngnix镜像后输入docker run -d -p 91:80 nginx 命令后创建Ngnix容器并自动运行,个人认为排除Ubuntu 18.04系统及Docker原因。
    xiao qiao4个月前 (2019-06-22)回复
    • 1,创建的文件是位于宿主机的,启动容器的时候映射给容器使用而已。 2,不需要改为服务器IP。
      秋水逸冰4个月前 (2019-06-24)回复
  9. 在vi /etc/shadowsocks-libev后,通过vi /etc/shadowsocks-libev/config.json创建配置文件,显示perssion denied,并且:wq保存后提示E212:can't open file for writing.是我创建文件的方式不对吗?
    nobody4个月前 (2019-06-18)回复
    • 首先你要新建/etc/shadowsocks-libev文件夹,然后才能往里面写文件。
      秋水逸冰4个月前 (2019-06-19)回复
  10. 2019-06-05 03:23:38 INFO: using tcp fast open, 2019-06-05 03:23:38 INFO: UDP relay enabled, 2019-06-05 03:23:38 INFO: initializing ciphers... aes-256-gcm, 2019-06-05 03:23:38 INFO: This system doesn't provide enough entropy to quickly generate high-quality random numbers., Installing the rng-utils/rng-tools, jitterentropy or haveged packages may help., On virtualized Linux environments, also consider using virtio-rng., The service will not start until enough entropy has been collected., , 2019-06-05 03:23:38 ERROR: bind: Cannot assign requested address, 2019-06-05 03:23:38 ERROR: failed to bind address, 2019-06-05 03:23:38 INFO: using nameserver: 8.8.8.8, 2019-06-05 03:23:38 INFO: tcp server listening at *.*.*.*:9002,
    ghl5284个月前 (2019-06-05)回复
  11. Stopped for a few seconds with exit code 255 无法开启 怎么解决啊
    ghl5284个月前 (2019-06-05)回复
  12. 似乎tcp fast open选项如果为true 会导致运行后崩溃,是否docker 内核也要开启fast_open,宿主vps已开启fast_open, 还是说可能是应用端没开fast open 导致的?
    k6个月前 (2019-04-29)回复
    • 请问tcp fast open选项开启的话,怎么让docker容器不崩溃?
      polar95274个月前 (2019-06-07)回复