作者kenwufederer (Nash)
看板Linux
标题Re: [问题] docker容器内的NIS该如何让其他Host连到
时间Tue Feb 5 17:03:59 2019
※ 引述《ShenJing (ShenJing)》之铭言:
: 大家好,不好意思又来发问,
: 想请问若想在 docker container 中架设 NIS Server,
: 该如何让其他台主机连上(ypbind)呢?
: 我先描述目前环境、尝试过的方法、卡住的地方:
: ---目前设备---
: 总共2台实体主机,其中1台为 Docker host(开个container架 NIS Server),
: 各有 public IP
: [Docker Host]
: IP:140.5.5.5
: Hostname:host
: CentOS 7.6.1810
: [NIS Server]
: 创建 container 额外下的参数:--privileged,以及与实体机 port 的映射
: -p 49311:111 -p 49311:111/udp
: -p 49211:1011 -p 49211:1011/udp
: -p 49212:1012 -p 49212:1012/udp
: (111:rpcbind
: 1011:ypserv
: 1012:yppasswd)
: IP:172.17.0.6
: Hostname:nis-master
: CentOS 6.10
: [NIS Client]
: IP:140.4.4.4
: Hostname:client
: CentOS 7.4.1708
: 过程与教学是看鸟哥,
: ypserv.conf 直接设定为 * : * : * : none,
: 此外为避免问题出在指令或参数,後来有在 host 那台以同样过程
: 直接架设 NIS Server,原本 Client 使用 yptest 测试,但卡在 ypbind,
: 後来暂时关掉 firewalld 後,可成功连线。
: (还不太会 iptables,所以才暂时用关掉防火墙的下下策做测试 )
: 後来换回该 host 的 container,跑了同样流程却不行,
: (两者rpcinfo的输出结果均正确一致)
: 是卡在 ypbind 的阶段:https://i.imgur.com/KtGyQAo.png
: ---问题点---
: 比较有问题的是 /etc/hosts 部分:
: 140.5.5.5对应host
: 140.4.4.4对应client
: 因为 client 端在填 NIS domain 的 Server IP时,填的是140.5.5.5,
: 但请问这样 Client 在连线 (ypbind) 时,会不会一直想连到Docker host,而不是有
: 设定对应的 port 的 container,最後因为host上没有架设 NIS,导致一直无法连线呢?
: 目前感觉最有可能的问题应该是出在这,
: 不知道该怎麽该怎麽让 client 去连指定 port…
: 後来我有直接设定111:111、1011:1011、1012:1012,
: 可是 111 port 已经被 systemd 占用了,所以此方法也失败…
: 请问有没有大大有处理过类似问题的呢?
: 最後感谢各位的阅读
你的问题点就是 Container Port 与 Host Port 不同
造成 Client 无法连线到 Container Port
问题很好解决,就是直接将 NIS 换成 Container IP 就好
可是...你应该思考的是,用错误的方式去应付问题是不好的
举个例子,因为发现 FTP 不能使用就直接把目录权限改成 777
这样可以快速应付问题交差,但 777 这种权限应该出现吗?
应付问题还是解决问题比较重要,就是一个管理员的品质
最後想跟你提所谓的盲点是甚麽
一、
你可以想想看,通常会用到 NIS,代表环境中机器数量较多
结果你为了 container 化,又去修改全部 VM 的 Client 端
何况 NIS 进行 container 的话,势必需要将帐密 mapping 到 Host
从这里去思考,NIS container 之後有带来甚麽好处吗?
并没有,除了增加麻烦之外还增加风险值...
二、
你 port 111 的错误来自於...
系统预设已经使用,所以没办法 mapping
个人认为,由於 NIS 并不是需要常常异动版本的服务
正式环境而言,也都是独立运作,不太可能让 NIS 另外当 Web Server...
这是安全性的考量,毕竟服务越多危险性就越高,更新也越容易出错
建议在 VM 与 Container,选择适合的去运用才是好的
而不是一昧地追求 Container,这样实在有点本末倒置
至於你的老师...这点建议去说服他,没有其他办法...
学习东西的方式,建议先从理解原理与为何需要开始
因为理解技术原理是非常重要的...
因为你理解 NIS 的话,应该不会做 container
因为你理解 rpcbind 的话,应该知道 111 port 为什麽会不能 mapping
另外就是看 Log 的习惯,这点非常重要
Log 可以提供非常多的资讯给您,也是我最喜欢 Linux 的地方
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.249.170.236
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1549357445.A.D57.html
1F:推 da21510: 推 02/05 19:43
2F:→ da21510: 一堆没意义的行为只会增加管理难度 02/05 19:43
3F:推 chang505: 推这篇 02/06 03:10
4F:→ chang505: 原原PO那篇错乱到懒得回答他 你人超NICE 愿意解释基础 02/06 03:11
5F:推 PhenoK: 非常感谢您,还让您仔细解释我的盲点,值得我好好思考,感 02/06 13:46
6F:→ PhenoK: 谢各位大大 02/06 13:46
7F:→ PhenoK: (原原po留) 02/06 13:47
8F:推 nbkl: 很清楚的讲解 02/24 13:13
9F:推 awang44: 赞 03/07 02:36
10F:推 ShenJing: 想在补个疑问,在docker预设使用的网路模式下,其他host 06/27 09:41
11F:→ ShenJing: 无法连到该台host下的容器IP吧,172.XX/16不是private吗 06/27 09:41
12F:→ ShenJing: *再 XD 06/27 09:41