0

我想用docker创建多个pptp客户端,每个pptp docker实例都应该有独立的ppp网络接口,所以docker--network参数必须是[bridge],但是我在实例启动时遇到了[LCP:超时发送配置请求]。

Dockerfile

FROM golang:1.9-alpine as source
MAINTAINER wlw

RUN apk add --no-cache \
            --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ \
            pptpclient

COPY entrypoint.sh /entrypoint.sh
RUN mkdir -p /go/src/pptp
WORKDIR /go/src/pptp
COPY . /go/src/pptp
RUN go build -o app
#RUN echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper
ENTRYPOINT ["/entrypoint.sh"]

CMD ["/bin/bash"]

入口点.sh

#!/bin/sh
#echo  net.ipv4.ip_forward=1 /etc/sysctl.conf
echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper
 modprobe nf_conntrack_pptp
cat > /etc/ppp/peers/${TUNNEL} <<_EOF_
pty "pptp ${SERVER} --nolaunchpppd"
name "${USERNAME}"
password "${PASSWORD}"
remotename PPTP
file /etc/ppp/options.pptp
ipparam "${TUNNEL}"
_EOF_

cat > /etc/ppp/ip-up <<"_EOF_"
#!/bin/sh
ip route add 0.0.0.0/1 dev $1
ip route add 128.0.0.0/1 dev $1
_EOF_

cat > /etc/ppp/ip-down <<"_EOF_"
#!/bin/sh
ip route del 0.0.0.0/1 dev $1
ip route del 128.0.0.0/1 dev $1
_EOF_
 modprobe nf_conntrack_pptp
exec pon ${TUNNEL} debug dump logfd 2 nodetach persist "$@"

main.go [测试pptp客户端ip]

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "time"
)

func main() {
    count := 0
    for {
        fmt.Println("count:",count)
        time.Sleep(time.Second *2)
        req, err := http.NewRequest(http.MethodGet, "http://45.40.198.155:1234", nil)
        if err != nil {
            panic(err)
        }
        res, err := http.DefaultClient.Do(req)
        if err != nil {
            panic(err)
        }
        data, err := ioutil.ReadAll(res.Body)
        fmt.Println(string(data))
    }

}

我更改了centos版本和docker版本,但也遇到了同样的错误。顺便说一句,在VMware Fusion上运行的centos,版本是7.2,docker版本是19.03.1

码头工人运行命令

docker run -it  --restart always --privileged -e SERVER=hb660.3322.org -e TUNNEL=vps -e USERNAME=xe5602 -e PASSWORD=621  --network=bridge   pptp:test

这是日志

pppd options in effect:
debug       # (from command line)
nodetach        # (from command line)
persist     # (from command line)
logfd 2     # (from command line)
dump        # (from command line)
noauth      # (from /etc/ppp/options.pptp)
refuse-pap      # (from /etc/ppp/options.pptp)
refuse-chap     # (from /etc/ppp/options.pptp)
refuse-mschap       # (from /etc/ppp/options.pptp)
refuse-eap      # (from /etc/ppp/options.pptp)
name xe5602     # (from /etc/ppp/peers/vps)
password ??????     # (from /etc/ppp/peers/vps)
remotename PPTP     # (from /etc/ppp/peers/vps)
        # (from /etc/ppp/options.pptp)
pty pptp hb660.3322.org --nolaunchpppd      # (from /etc/ppp/peers/vps)
ipparam vps     # (from /etc/ppp/peers/vps)
nobsdcomp       # (from /etc/ppp/options.pptp)
nodeflate       # (from /etc/ppp/options.pptp)
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9cb1e5f2> <pcomp> <accomp>]
LCP: timeout sending Config-Requests
Connection terminated.
Modem hangup

之后macvlan,又出现了另外两个问题

rcvd [CHAP Success id=0x1 "S=040A411772569943A96B9311C0FDA2AF5746BC47"]
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 192.168.101.202>]
rcvd [IPCP ConfReq id=0x1 <addr 200.6.211.68>]
sent [IPCP ConfAck id=0x1 <addr 200.6.211.68>]
rcvd [IPV6CP ConfReq id=0x1 <addr fe80::0000:0000:00f0:3213>]
Unsupported protocol 'IPv6 Control Protocol' (0x8057) received
sent [LCP ProtRej id=0x3 80 57 01 01 00 0e 01 0a 00 00 00 00 00 f0 32 13]
rcvd [proto=0x8281] 01 01 00 04
Unsupported protocol 'MPLSCP' (0x8281) received
sent [LCP ProtRej id=0x4 82 81 01 01 00 04]
rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
sent [IPCP ConfReq id=0x2 <addr 192.168.101.202>]
rcvd [IPCP ConfNak id=0x2 <addr 200.6.212.239>]
sent [IPCP ConfReq id=0x3 <addr 200.6.212.239>]
rcvd [IPCP ConfAck id=0x3 <addr 200.6.212.239>]
local  IP address 200.6.212.239
remote IP address 200.6.211.68
4

0 回答 0