参考资料:http://www.runoob.com/docker/docker-tutorial.html
https://www.gitbook.com/book/yeasy/docker_practice/details
http://pptpclient.sourceforge.net/
http://blog.csdn.net/halcyonbaby/article/details/43499409
http://jamyy.us.to/blog/2012/12/4278.html
需求:在docker(ubuntu16.04)里面,使用pptp ***连接远程的pptp服务器,测试联网成功.
主机环境:
root@xxx:/home/xxx# uname -a Linux xxx 3.19.0-66-generic #74~14.04.1-Ubuntu SMP Tue Jul 19 19:56:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
准备工作
主机下载安装docker,并pull ubuntu最新版本(略)
主机加载模块,不然在docker里面无法连接***.这个坑我花了半天时间解决.
root@xxx:/home/xxx# echo nf_conntrack_pptp | sudo tee /etc/modules-load.d/pptp.conf root@xxx:/home/xxx# cat /etc/modules-load.d/pptp.conf nf_conntrack_pptp
3.使用真实的root用户登录docker,不然你会发现,很多无法解决的问题.这个坑我也花了半天时间.
root@xxx:/home/xxx# docker p_w_picpaths REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest bd3d4369aebc 2 weeks ago 126.6 MB
4.进入docker,更新系统,下载基础的网络命令以及pptp客户端pptp-linux
root@xxx:/home/xxx# docker run -i -t --privileged=true ubuntu:latest /bin/bash root@05fd3b705048:/# apt-get -y update root@05fd3b705048:/# apt-get -y install vim net-tools pptp-linux
5.编辑pptp登录信息,两个文件,第一个文件是帐号密码:
root@05fd3b705048:/# cat /etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses hxwx PPTP 159 *
第二个文件是pptp连接的别名
root@05fd3b705048:/# cat /etc/ppp/peers/xiamen pty "pptp x.x.x.x --nolaunchpppd" #(此处为pptp服务器的ip地址) name hxwx #hxwx为/etc/ppp/chap-secrets对应的登录用户名 remotename PPTP ipparam xiamen require-mppe-128 file /etc/ppp/options.pptp
6.到此,pptp客户端的信息编辑完毕.
使用debug的模式测试登录.
root@05fd3b705048:/etc/ppp/peers# pon xiamen debug dump logfd 2 nodetach ............... local IP address 192.168.99.11 remote IP address 192.168.99.1 Script /etc/ppp/ip-up started (pid 146) Script /etc/ppp/ip-up finished (pid 146), status = 0x0
如果显示以上内容,测试成功连接上***,并获取远程服务器端ip地址.192.168.99.11
正常的连接已经测试:
root@05fd3b705048:/etc/ppp/peers# pon xiamen root@05fd3b705048:/etc/ppp/peers# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:749 errors:0 dropped:0 overruns:0 frame:0 TX packets:454 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1041172 (1.0 MB) TX bytes:31660 (31.6 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.99.11 P-t-P:192.168.9.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1496 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:60 (60.0 B) TX bytes:66 (66.0 B)
7.到此,成功连接***,至于路由的设置,就不列出来了.退出docker,使用docker ps -a
查找刚刚修改过的docker id,我的docker id为:694d61154c1f,使用conmit命令保存修改至新的镜像.
root@xxx:/home/xxx# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS root@xxx:/home/xxx# docker commit -m="pptp" -a="xxx" 694d61154c1f ubuntu16.04:pptp
列出镜像:
root@xxx:/home/xxx# docker p_w_picpaths REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu16.04 pptp 38e146672457 2 days ago 238.2 MB
总结:
思路:
使用ubuntu docker-------设置pptp-client客户端--------测试pptp连接***成功.
难点:
docker要使用真实的root用户,命令:--privileged
宿机要打开nf_conntrack_pptp模块,网上查找资料获知,这是内核3.18以上的Bug