docker容器內的NIS該如何讓其他Host連到 - Linux

Tristan Cohan avatar
By Tristan Cohan
at 2019-02-05T17:03

Table of Contents

※ 引述《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 的地方

--
Tags: Linux

All Comments

Tom avatar
By Tom
at 2019-02-06T19:30

一堆沒意義的行為只會增加管理難度
Daph Bay avatar
By Daph Bay
at 2019-02-09T15:57
推這篇
Frederica avatar
By Frederica
at 2019-02-12T09:23
原原PO那篇錯亂到懶得回答他 你人超NICE 願意解釋基礎
Wallis avatar
By Wallis
at 2019-02-12T18:45
非常感謝您,還讓您仔細解釋我的盲點,值得我好好思考,感
謝各位大大
Cara avatar
By Cara
at 2019-02-13T16:42
(原原po留)
Mia avatar
By Mia
at 2019-02-17T22:44
很清楚的講解
Catherine avatar
By Catherine
at 2019-02-22T05:34
Noah avatar
By Noah
at 2019-02-24T14:09
想在補個疑問,在docker預設使用的網路模式下,其他host
無法連到該台host下的容器IP吧,172.XX/16不是private嗎
*再 XD

最近網路上找到能正常玩惡靈古堡2重製版的方法

Yedda avatar
By Yedda
at 2019-01-31T12:18
這篇幫自己備份用,以免未來自己忘記怎麼做。 以下方法是使用 Valve 的 Proton3.16-6 BETA 來達成的。 發行版是以 Ubuntu 18.04.1 為例 --------------------------------------------------------------------- ...

透過VPN登入ssh

Isabella avatar
By Isabella
at 2019-01-29T21:01
最近在IP分享器上弄了openVPN, 從手機連上VPN後, 可以登入FreeBSD的ssh, 但是不能登入Debian的ssh, 請問Debian的sshd_config需要修改哪個環節, 才可以讓Debian可以允許VPN端登入? -- 孔明受命造箭,諧魯肅登船進發,當夜五更時候,船已近曹操水寨。 孔明 ...

docker容器內的NIS該如何讓其他Host連到

Jack avatar
By Jack
at 2019-01-29T20:06
大家好,不好意思又來發問, 想請問若想在 docker container 中架設 NIS Server, 該如何讓其他台主機連上(ypbind)呢? 我先描述目前環境、嘗試過的方法、卡住的地方: ---目前設備--- 總共2台實體主機,其中1台為 Docker host(開個container架 ...

檔案名稱後面有*及@

Irma avatar
By Irma
at 2019-01-29T10:05
小弟在Windows下使用zsh及fish shell 下了 % cat /etc/shells後顯示以下shell # /etc/shells: valid login shells /bin/sh /bin/bash /bin/rbash /bin/dash /usr/bin/tmux /usr/bi ...

建立Oracle ODBC安裝卡關

Delia avatar
By Delia
at 2019-01-28T00:33
小弟是linux極新手,爬文看操作遇到問題,跪求大大幫忙 目的: Oracle ODBC安裝完成,因為要用R語言透過ODBC連接資料庫。 版本: ubuntu 16.04 使用小黑窗操作 Oracle driver version: http://0rz.tw/FIPlQ unixODBC vers ...