顯示具有 伺服器 標籤的文章。 顯示所有文章
顯示具有 伺服器 標籤的文章。 顯示所有文章

2014年4月6日 星期日

[LINUX]我的 CentOs-Server 安裝流程-part2-iptables


Linux核心中有著內建防火牆,iptables
防火牆乍聽之下難以親近,但iptables運作原理是很單純的
不外乎是正面列舉或是負面列舉的概念:
正面列舉:預設條件是全部拒絕,唯有滿足列舉出的條件方得通過
負面列舉:預設條件是全部接受,唯有滿足列舉出的條件會被拒於門外

如何?不難理解吧,那就開始操作iptable的設定吧!

首先先來讀看看預設的iptables規則如何設定,在此使用iptables-save來讀取目前的設定值
單純使用iptables-save指令時,目前的規則會顯示在主控台上
而為了基於目前的設定來作修改,我們把內容印在檔案中,之後改完檔案後再使用iptables-restore將規則存回,操作上方便很多。

將iptables規則重導向到文件內:
#iptables-save > 任意文件

使用vim讀看看預設的規則長何樣:
# Generated by iptables-save v1.4.7 on Thu Apr  4 20:20:29 2013
*filter
:INPUT ACCEPT [0:0]                                          //進入封包預設條件為全部通過
:FORWARD ACCEPT [0:0]                                  //轉發封包預設條件為全部通過
:OUTPUT ACCEPT [431:50629]                          //發出封包預設條件為全部通過
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
//已建立連線狀態的封包予以通過
-A INPUT -p icmp -j ACCEPT                             //icmp封包予以通過(讓別人可以ping你)
-A INPUT -i lo -j ACCEPT                                   //來自內部迴路的封包予以通過
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
// 欲建立於port-22的封包予以通過
-A INPUT -j REJECT --reject-with icmp-host-prohibited                   //不滿以上規則的統統拒絕!
-A FORWARD -j REJECT --reject-with icmp-host-prohibited          
COMMIT
# Completed on Thu Apr  4 20:20:29 2013

iptables的規則分為三群:
INPUT:進入系統的封包該受到何種過濾方法
OUTPUT:從系統發出的封包該受到何種過濾方法
FORWARD:從系統轉發的封包該受到何種過濾方法

而過濾流程是序列式的,照著規則由上至下判定條件並決定動作,動作就是 -j 所描述,條件就是動作以外的描述部份(很像C語言中的 if(條件){動作}語句塊),
你也可以視iptable照此scripts依序執行動作,所以設定規則的順序是很重要的!

從上面的預設規則可以看出,預設防火牆只允許SSH通過,為了之後能讓其他服務通過,有必要改一下預設設定。

宅哥家裡是以一台router連結所有區網內的電腦,目前不想對外部網路進行開放,想作出以下設定:
  • 預設政策為丟棄所有封包
  • 只開放內部網路(192.168.0.0/24)通過
  • 對於外部網路而言…好啦勉強能讓我連進ssh就好(至少留了一扇回家的門)
那麼我們就通過預設設定檔進行修改:
# Generated by iptables-save v1.4.7 on Thu Apr  4 21:38:30 2013
*filter
:INPUT DROP [15:888]                                                      // 進入封包預設為全部拒絕!
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [629:126630]
-A INPUT -i lo -j ACCEPT                                                // 來自內部迴路的封包予以通過
-A INPUT -s 192.168.0.0/24 -j ACCEPT                          // 來自區域網路的封包予以通過
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT  
// 欲建立於port-22的封包予以通過(來自外部網路也過的去喔)
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
// 已經建立連線的封包予以通過(這是讓SSH能維持連線的規則)
COMMIT
# Completed on Thu Apr  4 21:38:30 2013

很簡單的設定吧!然後將此設定載回iptables服務:
#iptables-restore < 新設定

設定完記得存個檔:
#iptables-save > 備份檔名

如此以來我的SERVER就在網際網路上隱形啦,應該變的比較安全
做完以上幾個動作之後會發現,疑,怎麼我重開機後,防火牆整個糟金(台語)去?
那是因為iptable又載入的規則啦!
所以我們要在開機自訂腳本內加上自己想跑的流程:
#vim /etc/rc.d/rc.local

加上:
iptables-restore < 新設定

後記:本來想嘗試開放特定硬體位址(MAC)通過,比方說我的筆電,希望能讓他也可以在任何網域也能進入這台伺服器,但最終得知受到路由器遮蔽的情形下,最後進入伺服器的封包硬體位址(MAC)會是路由器的,無法辨識出是不是來自特定設備,此解行不通,仍在想辦法…

接著準備來練習森巴舞了(Samba),彭掐掐、掐掐…

(To Be Continued)

2013年8月27日 星期二

[LINUX] CentOS x DLNA Server for PS3



何謂DLNA呢?

Digital Living Network Alliance
是咱們的音速小子寶貝- 索尼在1993年提出的多媒體共享"規格"

簡單的說,符合這規格的實作,是以主從的架構分享多媒體串流
儲存在A伺服器的多媒體可在支援DLNA的B、C、D裝置上觀看,實際解碼輸出串流的裝置是A伺服器,播放端不須特別安裝其他播放軟體或是解碼器,你只需要將網路頻寬保持通暢即可。

據宅哥所知,除了索尼自家的PS3,據說Android系的智慧型手機都有內建此功能(也許都是師出LINUX核心的關係所以有這樣的裙帶關係)

當然,咱們的CENT-OS伺服器亦有擔任DLNA server的能力,今天就是要介紹如何安裝
PS3 Media Server - DLNA伺服器軟體 for PS3

首先先到這裡(PS3 Media Server官網)下載安裝包 pms-1.90.1-generic-linux-unix.tar.gz

下載到後請解壓:
#tar -zxvf pms-1.90.1-generic-linux-unix.tar.gz

會在當前資料夾解出
pms-1.90.1 資料夾

前進一步,進去看看INSTALL.txt
發現PMS相依這些東東:

  • ffmpeg(影音解碼函式庫)
  • mediainfo(提供影音標頭資訊)
  • mencoder(影音編碼器)
  • openjdk-7-jre(JAVA 運行環境,PMS是由JAVA寫成)
問題來了,預設的yum資料庫沒有維護mplayer、mencoder、ffmpeg…等等,此時需要再對YUM做些其他動作 - 抓取非官方套件:

首先安裝protectBase
#yum install yum-protectbase

接著修改YUM資料庫設定
#vim /etc/yum.repos.d/CentOS-Base.repo

進去設定檔後,在[base] [update] [centosplus]三個段落加上
protect=1
在其他段落則加上
protect=0
然後在[centosplus]段落讓enable失效
#enable=0

好了,存檔離開設定檔,接著去以下網址抓rpmforge套件:
記得認清是32位元還是64位元喔,在他的description處有說明CENTOS版本與對應的硬體架構

接著將DAG公鑰弄進RPM系統:
#rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

開始安裝RPMFORGE套件:
#rpm -ivh rpmforge-release-0.5.3-1.el6.rf.i686.rpm
最後一步,更新一次YUM資料庫:
#yum check-update

應該可從螢幕輸出發現
13 packages excluded due to repository protections
此類的字樣,就表示你的資料庫裡有非官方套件了

接著的動作就簡單啦,回到剛剛的相依套件安裝,把PMS所需相依備齊:
#yum -y install mplayer mplayerplug-in
#yum install mencoder
#yum install java-1.6.0-openjdk

到此,若上述的相依套件都到位的話,基本上不須任何設定,就可以順利啟動PMS了,回到pms-1.90.1資料夾,透過PMS.sh啟動PMS服務:
#./PMS.sh

密密麻麻的訊息中,最後會出現:
#[main] The server should now appear on your renderer
這表示你的PMS伺服器啟動成功了!應該在遠端裝置上搜尋的到了

如果此時有裝置連線到這台伺服器,會出現類似這樣的訊息:
[pool-4-thread-1] Renderer Android found on this address: 192.168.0.108
[pool-4-thread-1] Address /192.168.0.108 has an estimated network speed of: 14 Mb/s
在PS3上發現伺服器

瀏覽資料夾的方式選擇影片

播放效果還蠻棒的!











[11/09 新增]

接著你會發現,照預設值啟動PMS,在DLNA設備上居然可從根目錄(/)瀏覽整個伺服器
不是很恰當對吧,此時要修改PMS資料夾下的PMS.conf
在註解< Shared folders >中改變此設定:
#folders = /home/nfs1,/home/special

在上面的範例裡我設定了兩個資料夾,nfs1/ 與 special/ 可供瀏覽,用逗號分開

另外分享Android手機上可連結到PMS的軟體 - MediaHouse
幾乎是免設定就可以直接連上剛才架好的PMS喔
就是灌這味
按剛剛設定的資料夾去瀏覽嚕




手機上播放的效果,棒!

以後就可以捧著智慧型手機在床上看謎之影片啦,嘻嘻
威!

2013年5月12日 星期日

[LINUX]我的 CentOs-Server 安裝流程-part1




首先要來安裝LINUX作業系統啦,小茂這次選擇的是CentOS這個Distribution,雖說過去也有用過Ubuntu,但據信CentOS作為伺服器應用的話是相對優的版本。

認識一下什麼是CentOs:伺服器安裝第一首選 CentOS 6帶來寧靜革命


安裝版本:CentOS-6.2-i386-LiveCD.iso
義守大學伺服器

.iso 是光碟映像檔,在Windows上丟進Daemon Tool就可以燒成可開機的光碟,讓我們部署在新機器上啦。






接著把光碟放進目標,記得修改BIOS中的開機順序,光碟>硬碟,系統就會從CentOs中開機了!

接著會看到自動倒數的畫面,按個任意鍵讓他跳出開機/安裝菜單:



即便我們最終要建的是文字版操作界面,但這時候可千萬要選擇Install
(因為實測後發現Install才能自定分配磁碟空間,小茂覺得糊塗)

然後我們就順利進入安裝程序了,中間的過程基本都很好懂:
選擇語言、鍵盤系統、時區⋯這裡就不一一囉唆了

關鍵是磁碟分配:

唯有圖形安裝界面才會到這步呀(搔頭)
考慮到日後的維護還有擴充,小茂在此做了以下分配:

  • /boot 500MB
  • /        10GB
  • /usr    5G         (應用程式檔案放置的地方啦,獨立割出來便可以獨立備份啦)
  • /var    5G         (應用程式參考的資料庫,也是需要備份的)
  • 剩下的都留給LVM(拿來建立/home用的,用LVM利於擴充,放影片音樂的地方啦)

啪嗒,原則上過了磁碟分配後就沒有需要傷腦筋的地方了。

接著重新開機,取出光碟,讓系統從硬碟開機,與伺服器相見歡,由於剛剛是用圖形模式安裝的緣故,系統會理所當然的進入有GUI的CentOS

小茂希望系統開機後還是回歸文字模式,所以來做以下設定更動:

調整run level,使用vim 改變設定檔:

#vim etc/inittab

找到這行(預設是5,X-Window模式):
id:5:initdefault:

改成(多使用者文字模式)
id:3:initdefault:

重開機後系統的世界就是黑白的了!

然後,對於伺服器而言,第一重要的就是sshd服務了,這個服務可以讓我們透過網路,對伺服器進行遠端登入,不用坐在伺服器前也可以維護/設定主機,而且這項服務在window、MAC、Linux都可應用,簡單地說,只要龍五手上有電腦(加網路),誰都無法阻止他操作自己的伺服器!

好了,現在就來啟動伺服器上的sshd服務:
#/etc/init.d/sshd start

原則上這個服務不太需要設定即可馬上應用,接著用其他電腦對伺服器進行連線測試,如果你有LINUX或MAC,打開終端機輸入:
#ssh root@192.168.0.105 (我的伺服器在此區網IP的情況,)

如果是用windows,可先來此下載pietty
然後在主畫面上鍵入IP或是domain name,port 使用預設的22
就可以進入你的主機登入畫面了



好了,sshd也測試成功了,現在我們可以遠端登入了,可以來拔掉鍵盤還有螢幕了嗎?等等!要先確定重開機後系統也會自行啓動sshd服務,否則人還是要跑到機器前拜託他讓你連線,這樣似乎還是功敗垂成。

小茂的印象是這版CentOS的run level3預設是不會啟動sshd的,我們可以透過以下動作確認:

#vim /etc/rc3.d/

這檔案是敘述了系統run level3時,會載入/停止的服務清單,可以這樣的方式解讀:
[K或S]編號 服務名稱

其中K代表Stop(關閉服務)、S代表Start(啓動服務)

你可發現其中有一行:
#K25sshd

喔喔這可不妙,這代表系統預設重開機後不會載入sshd服務,龍五要死來了。

原則上,我們不要去修改rc3.d這預設的服務載入清單,以免未來經過修修改改導致系統發生問題時,系統回不到這最基本的可啓動狀態(瑞凡:系統回不去了)

正確做法是,在自定服務載入清單內,加上自行想啟動的服務,來做以下設定:

#vim /etc/rc.local

這檔案就代表了自定啟動服務清單,在文件內加上先前操作過的指令:
#/etc/init.d/sshd start

如此一來系統會經由以下的順序,在開機時載入sshd服務了:

  1. inittabl    (進入run level3模式,並透過rc3.d啓動服務)
  2. rc3.d     (關閉xx服務⋯關閉sshd服務⋯開啟xx服務⋯執行rc.local)
  3. rc.local  (啟動sshd服務)

重開機後測試看看,果真有效!
之後可以翹腳捻鬍子在星巴克玩伺服器了,喔耶!


(To Be Continued)