首先安裝以Debian的APT來安裝
apt-get install postfix
安過程會出現一個訊息
General type of configuration?
No configuration
Internet Site
Internet with smarthost
satellite system
Local only
如果選第一個No configuration就要照下面步驟做
cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
/etc/init.d/postfix restart
就算只把Postfix 用於區域網路傳遞也是選擇Internet Site唷~(在這邊我們選這個)
這樣安裝好就有一個/etc/postfix/main.cf 的組態檔了
root@ubuntu:~#less /etc/postfix/main.cf
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = radius_os
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = localdomain, localhost, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
接下來要您的組態來設定
觀看是否有啟動netstat -tulpn
tcp 0 0 *:smtp *:* LISTEN 7675/master
介紹一些相關套件
WebMail:
squirrelmail
Mail指令傳送:
Mailx ,mailutils
未完成...
傳承科技專門處理硬碟資料遺失,硬碟壞軌及異聲
各式隨身碟資料搶救,不過電及各種記憶卡如SD、MS、XD、CF
精通各種筆電改裝作業系統、MAC APPLE、LINUX、WINXP、VISTA
精緻服務盡在傳承 專業服務快速完工
1003 07/07 希捷Barracuda 7200.11全系列機瘟硬碟,傳承可處理
0925 突破!北京台商研發新隨身碟 插上電腦就可看臺灣頻道
0918 MSN霸道!強制更新9.0版本 剝奪舊版用戶登錄權
0907 告別硬碟 GDrive個資保密引疑慮
0906 為防止Downadup疫情擴大插入隨身碟請暫停使用「自動播放」功能
0903 兩倍牧場容量「2TB」硬碟一顆要8999元
2008年4月20日 星期日
| [+/-] |
[MAIL]安裝Postfix For Ubuntu 7.10 |
2008年4月14日 星期一
| [+/-] |
[SAMBA]Ubuntu 7.10實作SAMBA |
簡單介紹一下什麼是SAMBA Server
大家都知道xp的網路芳鄰(CIFS)就是讓區網內的所有電腦可共享檔案印表機
CIFS=Common Internet File System
但是網芳只能讓Windows機器溝通瞭解這樣就可以
在來還有一種服務是NFS(Network File System)
這是能讓所有Unix-Like機器溝通且用掛載的方式來共享資料
那能不能在linux上找到xp網芳或者在xp上找到linux所分享出來的檔案
如果對方是Vista可能會有些問題,因為:
Vista採用了SMB協議的新版本SMB2,
這可能會給那些連接到非微軟網路例如Linux的Samba伺服器上的電腦產生問題。
Windows 的網路芳鄰其實是使用 SMB/CIFS 通訊協定。
SMB (Server Message Block) 通訊協定最早是在 1980 年代由 IBM 所發展出來,這個通訊協定可以讓不同的電腦共享檔案、印表機、及其它裝置。SMB 最早是運作在 NetBIOS 的網路協上,一開始 IBM 設計了 NetBIOS 只是為了讓網路中少數的電腦可以彼此互相溝通。所以 NetBIOS 的功能比較陽春,在使用上有一些限制。例如,只能使用在區域網路中、跨不過路由器。後來又出現了 NetBEUI (NetBIOS Extend User Interface),也是 IBM 針對 NetBIOS 的改良版。後來又有 NetBIOS over TCP/IP,使得 SMB 協定也可以跑在 TCP/IP 上,並可以經由網際網路存取。在使用 NetBIOS 在存取遠端電腦時,我們可以使用電腦名稱如「\\alex-pc」來存取,而 TCP/IP 只能使用「\\192.168.0.1」這種方式來存取。所以 NetBIOS 也不是一無是處,它提供了比較簡單而易懂的方式。
Microsoft 在 1996 年為了市場考量,將 SMB 改名為 CIFS (Common Internet File System),名稱看起來比較容易瞭解,顧名思義就是可以在網際網路上使用的檔案系統。所以我們其實不應該稱呼網路上的芳鄰為「網路芳鄰」,而是 SMB/CIFS 通訊協定,就好像我們稱呼 HTTP、FTP 一樣。在 Windows 的世界裡,人們可以使用 SMB/CIFS 來共享檔案。而在 UNIX 的世界裡使用的是 NFS (Network File System);Mac 的世界中則是使用 AppleTalk。我們可以看到不同的作業系統環境中,都有自己的一套方法,不過我們還是可以經由安裝軟體來達成不同平台共享檔案的功能。
而NFS 是架構在 RPC Server 上面
且網芳有連限限制
Windows 2000 pro-------------->5人
Windows 2000 server---------->不限
Windows 2000 AD server------>不限
Windows XP home ------------->未知
Windows XP pro ---------------->10人
有效且被歸類為存活的連線數最高10人 以xpp來說
大約是這樣
行!就是SAMBA 下面來介紹一下摟!
SAMBA的主要功能:
分享檔案與印表機服務;
可以提供使用者登入 SAMBA 主機時的身份認證,以提供不同身份者的個別資料;
可以進行 Windows 網路上的主機名稱解析 (NetBIOS name)
可以進行裝置的分享 (例如 Zip, CDROM...)
接下來要安裝了!
Samba 目前有二個主要的版本:2.2.12 及 3.0.x。2.2.12 已經發展很久了,目前已進入停滯狀態。和 3.0 比較起來,速度稍快、功能較簡單。最大的不同在於 Samba 2.2.12 只支援 code page,而 Samab 3.0 支援 Unicode。Unicode 的支援可以讓我們同時在一個目錄中存放中文、日文、簡體中文等多國語的檔名。所以,這邊建議您安裝 Samab 3.0以上。
最新版是Samab 3.028a或許你可用更簡單的方式安裝:apt-get install samba
以Debian的安裝會出現以下套件需更新或安裝
以下是簡略說明
samba-common (主要設定檔 (smb.conf,主要設定檔 (smb.conf))
smbclient (掛載 SAMBA 檔案格式的執行檔 smbmount)
smbfs (SBM檔案系統公用程式)
smbldap-tools
samba (主要 daemon 檔案 (smbd 及 nmbd))
啟動,停用,重新啟動,重讀取,指令:/etc/init.d/samba start|stop|restart|reload
Red Hat 的語系設定是看/etc/sysconfig/i18n
Debian 則在"/etc/environment"
這點要注意一下~
這邊先以第一種peer/peer (Workgroup model)來說明
登入需要密碼
密碼檔放置 /etc/samba/smbpasswd (密碼要加密)
使用者有自己家目錄並建立群組user可進入/home/public
users 這個群組的所有人可具有寫入的權限
[root@ubuntu~]# vim /etc/samba/smb.conf
[global]
workgroup = MSHOME
netbios name = radius_nat
server string = This is nat samba server
unix charset = utf8
display charset = utf8
dos charset = cp950
log file = /var/log/samba/log.%m
(%m:代表 Client 端的 NetBIOS 主機名稱)
max log size = 1000
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
template shell = /bin/false
winbind use default domain = no
# 與密碼有關的設定項目,包括密碼檔案所在與加密與否喔!
security = user
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
# 與 NetBIOS name 名稱解析有關的設定
name resolve order = lmhosts bcast host
[homes]
comment = Home directories
browseable = no (不會開放給其他人瀏覽)
writable = yes
valid users = %S
create mode = 0664 (mask也可)
directory mode = 0775
※ umask=002
接下來要新增登入帳號 因為上面security = user所以
需要帳號登入~新增帳號為/etc/passwd裡的帳號為主
smbpasswd -a radius
New SMB password: 這個密碼不需與 /etc/shadow 相同
Retype new SMB password:
Added user dmtsai. 有秀出這個才是成功唷~
cat /etc/samba/smbpasswd 查看有沒有新增成功
radius:501:1B0F61E20F8F2D11AAD3B435B51404EE:F7EDDB3F55CC5DB1FE00D7F755028491:
[U ]:LCT-4590969D:
●因為上面[gogle]裡有
smb passwd file = /etc/samba/smbpasswd
這一行所以才能新增~要自己建立唷
touch /etc/samba/smbpasswd
接下來就是測試了
testparm 先確認smb.conf 語法是否正常
在來
/etc/init.d/samba reload or restart
smbclient -L //127.0.0.1
passwd: 直接Enter 就可
Anonymous login successful 匿名登入
Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (This is vbird's samba server)
cdrom Disk Samba server's CD-ROM
temp_bak Disk my bak dir
在用剛剛建立的帳號登入
smbclient -L //127.0.0.1 -U dmtsai
passwd: 輸入剛輸入的
Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (This is vbird's samba server)
cdrom Disk Samba server's CD-ROM
temp_bak Disk my bak dir
radius Disk Home directories有所差別多這一個
設定好就是如何登入了
先在Client Linux端建立mkdir /media/samba
smbmount //223.125.2.3/radius /media/samba -o username=radius,passwd=1111
這樣就掛載成功了!
到cd /media/samba
df .
//223.125.2.3/radius 20164444 3088222 17111128 13% /media/samba
------------------------
第二種進階PDC設定方式:
其他延伸閱讀請點"繼續閱讀"
關於語系問題可參考這裡
鳥哥samba介紹
實作windows xp 加入samba網域
2008年4月7日 星期一
| [+/-] |
[linux]如何在LINUX NAT主機上安裝msniff截取MSN訊息 |
如何在LINUX NAT主機上截取MSN訊息
下載軟體Sverre's Software for Unix/Linux
1.下載msniff主程式wget http://shh.thathost.com/pub-unix/files/msniff-0.2.0.tar.gz
tar zxvf msniff-0.2.0.tar.gz
cd msniff-0.2.0
2.安裝前請先至TCPDUMP下載libpcap安裝
wget http://www.tcpdump.org/release/libpcap-0.9.8.tar.gz
tar zxvf libpcap-0.9.8.tar.gz
cd libpcap-0.9.8
3.開始安裝libpcap
./configure > 會安裝在/usr/local/include
安裝過程遇到一些問題~
錯誤訊息:
your operating system s lex is insufficient to compile libpcap
請安裝apt-get install flex
在一次
./configure ... OK過了
make install
4.又出了問題這次安裝yacc
yacc -d grammar.y
make: yacc: Command not found
make: *** [grammar.c] Error 127
wget ftp://invisible-island.net/byacc/byacc.tar.gz
下載yacc~因為少了yacc
tar zxvf byacc.tar.gz
cd byacc-20070509
./configure
make
make install
都解決了回過頭要安裝msniff
make
出現了錯誤~以下訊息是因為上面pcap沒裝好才會出現的~
/usr/bin/ld: cannot find -lpcap
collect2: ld returned 1 exit status
make:*** [msniff] Error 1
如果又出現這個表示之前你在安裝pcap時~裝好但是msniff裡的Makefile
裡的 INCDIR沒有正確指向你安裝paca的path(/usr/local/include)
下面是必裝的請到http://shh.thathost.com/pub-unix下載即可
如果出現找不到-lsshmsg or -lshhopt.h請照下面步驟做就可以
wget http://shh.thathost.com/pub-unix/files/shhmsg-1.4.1.tar.gz
wget http://shh.thathost.com/pub-unix/files/shhopt-1.1.7.tar.gz
分別解壓縮make install 一樣會裝到/usr/local/include
5.回到msniff目錄在run一次make 就會出現一個msniff的2進位執行檔了~
./msniff eth2 ANY 1863
msn預設port 為tcp 1863
觀看失敗的原因:
原理,只是把區域網路內的封包,屬於MSN的部分,做解碼翻譯成文字!
所以區域網路用HUB看的到但是用SWITCH則就抓不到封包了
因為hub有廣播的特性,方能使用msn sniffer
Sniffer碰到Anti-Sniffer Ethernet Card或是Switch-HUB就失效了
TCP封包中有SOURCE、DESTINATION、FLAG、OFFSET等欄位,其中DESTINATION是由OSI中Data Link Layer所給予的。本來在區域網路上的封包都會經過每台電腦而傳送,但是本地電腦只捕捉DESTINATION為本地IP的封包,其他一概不哩,但是使用Sniffer他會開啟一種雜亂模式,所以就會不分DESTINATION把區域網路上所有的封包抓進來,因此常在網咖登入信箱與玩線上遊戲的朋友要注意了,由於WebMail Login、OLG Login所傳送的TCP/IP封包大多是明文傳送,因此很容易被攔截到然後被他人盜用,所以盡量不要在外面上網。
相關:
在 Linux NAT 監看 MSN 聊天內容
Linux NAT環境下 監看 MSN 聊天內容的工具
PS:
解壓縮遇到一個問題 請看繼續閱讀
gzip : stdin: not in gzip format
tar: CHild returned status 1
tar: Error exit delayed from previous errors
嘗試用tar xvf msniff-0.2.0.tar.gz 結果沒消沒息
沒有目錄出來~表示沒成功
在用:
gunzip or gzip 來解~一樣都無效
最後用一個很鳥很鳥的辦法~
透過我的xp下載下來~先解壓縮~當然要在xp上辨識gz or bz2
要先安裝此軟體7-zip
然後用WinSCP連到架有ssh_linux主機~把目錄msniff-0.2.0丟進去~收工
所以目前這個問題還沒有解決~
嘗試安裝7-zip For linux版
wget http://nchc.dl.sourceforge.net/sourceforge/sevenzip/7z457.tar.bz2
建議先建立一個目錄7zip
cd 7zip
tar jxvf /src/7z457.tar.bz2
當下會出現四個目錄
Asm |C |CPP|DOC
目前7zip還未在linux裝起來~ ...殘念..
| [+/-] |
[Ubunut]7.10上安裝bind9 Setup And Fundamentals(基本原理) |
前言: 我想對於LInux的基礎架構服務裡頭DNS算是蠻重要的一環
所以精通dns是很關鍵的~
因為有很多Services都仰賴DNS
且會發現Dns是系統中所有網路服務的關鍵元件
要知道早期BIND4與新版的BIND 8/9 組態不相容
在bind4 組態設定是/etc/named.boot
bind 8/9 是/etc/named.conf
記住Debian 裡的 BIND 設定檔位於 /etc/bind 的目錄下
因為ubuntu核心是Debian所以..
ubuntu安裝最新版是在/etc/bind/named.conf
最新版下載頁面http://www.bind9.net/download
且DNS採階層式管理,也就是每個網域都是唯一的
並且架設 DNS 就必須要瞭解整體網際網路的領域名稱架構
設定 DNS 之前,須瞭解領域名稱系統(Domain name system,DNS)裡面慣用的 FQDN、Hostname 與 IP 的查詢流程, 正解與反解、合法授權的 DNS 主機之意義及ZONE的相關知識
DNS,Domain Name Service,或者Domain Name Server,域名服務/域名服務器
Bind是使用最廣泛的Domain Name Server,它是Berkeley Internet Name Domain Service的簡寫
DNS測試網站
DNS的查詢原理:
打開IE輸入www.google.com
client端會去查詢DNS伺服器(去找resolv.conf查詢)
如果resolv.conf不知道~則會跑去問根伺服器(.)
根伺服器回答:『我不知道但我知道你要去那找答案~於是給了你一組.com(TLD伺服器)的ip』
我們會知道註冊於.com伺服器底下會有很多很多網域(很多)!
DNS伺服器的解析器會代表你的IE(瀏覽器)去查詢.COM
.COM伺服器回答:『我沒有這項資料ㄟ但我知道有個名稱伺服器有
ip是216.239.32.10 而名稱為:ns1.google.com』
於是DNS伺服器又幫你跑到此位址讀取了ns1.google.com所提供
的目錄資訊~然後dns將資料置於快取,方便以後在次取用。
安裝bind有2種Mode
1.是用apt或yun安裝自動解決相依性
另一種就自行下載原始碼編譯安裝
差別在於設定及PATH有稍微不同
1.這邊先以Debian For Ubuntu 7.10 的APT安裝介紹1.安裝BIND9
apt-get install bind9wrote key file /etc/rndc.key 2.自行下載原始碼編譯安裝
wget ftp://ftp.isc.org/isc/bind9/9.4.2/bind-9.4.2.tar.gz
./configure
make
make install
安裝完成後,檔案在 /usr/local/sbin/ 資料夾中: #ls -l /usr/local/sbin/named*
-r-xr-xr-x 2 root wheel 1180852 12 Set 23:46 /usr/local/sbin/named
-r-xr-xr-x 1 root wheel 132528 12 Set 23:46 /usr/local/sbin/named-checkconf
-r-xr-xr-x 1 root wheel 876588 12 Set 23:46 /usr/local/sbin/named-checkzone
設定檔默認是/etc/named.conf 沒看到~應該是要自行建立
未完~
ls -ls --full-time
網域名稱伺服器
| [+/-] |
[XP]XP文字底下的設定網路組態工具 |
在LInux底下~用ifconfig或ip 指令設定網路位置
其實在xp底下也有指令可以用來設定 用法差不多雷同 以下來介紹
netsh 這個指令
netsh interface ip set address name="區域連線" source=static addr=192.168.1.30 mask=255.255.255.0
netsh interface ip set address name="區域連線" gateway=192.168.1.1 gwmetric=1
netsh interface ip set dns name="區域連線" source=static addr=140.115.1.31
pause
netsh 底下有很多子指令
比較有用的就是interface
interface:語法
ip | ipv6 |protfroxy
ip延伸語法:
add | delete | dump | reset | set | show |
netsh interface ip show address 觀看網路組態(同網路連線>內容>tcp/ip)
netsh interface ip show dns 察看目前網路DNS IP(不是自定ip,此指令能看到dns設定)
(用指令切記不要開視窗版看會有錯誤訊息)
netsh >interface-- ┌ip ┌add ┐
│ipv6 │delete │
└protfroxy │dump │
│reset │
│set │
└show ┘
現在介紹如何將現有的組態備份下來
netsh interface ip dump > c:\bak.txt 備份組態檔
netsh -f c:\bak.txt 還原組態檔
如何設定組態呢!
netsh interface ip set address [name][source][gateway][gwmetric][addr][mask]
name=介面名稱 source=dhcp,static 設自動取的ip或靜態ip
gateway=設static時設定的預設閘道 gwmetric=閘道公制(通常=1)設none時無法設定
addr=介面ip mask=子網路遮罩
當然也可以用簡易設定
netsh interface ip set address 區域連線 static 192.168.1.30 255.255.255.0 192.168.1.1 1
netsh interface ip set address [name] static [addr][mask]基本要設兩個
FYI
2008年3月26日 星期三
| [+/-] |
[MAC]如何在Debian修改網路卡的順序(ubuntu7.10) |
Debian 4.0 和 Ubuntu 7.10 都是由 udev 的 persistent-net.rules 規則決定網路介面的名稱。規則所在的檔案在兩 GNU/Linux 有分別,但設定方法一樣。 Debian 4.0 的 persistent-net.rules 規則在 /etc/udev/rules.d/z25_persistent-net.rules ,而 Ubunut 7.10 中則在 /etc/udev/rules.d/70-persistent-net.rules:
vim /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# MAC addresses must be written in lowercase.
# Firewire device 000ac606203a402e (ohci1394)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="01:02:a4:95:02:44:e8:63", NAME="eth0"
# PCI device 0x8086:0x119b (e1000)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="10:27:d3:32:53:58", NAME="eth1"
在上面的address 與name修改
記的要sudo pppoeconf 重設定一次pppoe 如果
不這麼做請確認/etc/network/interfaces裡的設定是否有跑掉
及介面卡設定是否正確!
ps:其他延申知識
查看網路線是接在那一張網卡
能用ip link show
來觀看三張網卡那一張有接網路線
前面有秀出NO-CARRIER表示沒有接網路線
或者用ifconfig eth1 有秀出RUNNING 表示是有接上網路線的!
或用ifconfig eth0 down(up)時看一下主機後面網卡燈號
如果有熄掉1-2秒表示就是這張!
找出那一張eth是什麼晶片dmesg |grep eth 可查出端倪
lspci |grep Eth 也可以!
其版本可參考以下幾篇文章
在 Debian 中如果更改網卡的順序呢?
修正網路介面名稱
Udev Over view
Linux操作系統下乙太網卡的安裝及配置
2008年3月25日 星期二
| [+/-] |
[SSH]對root及user做安全性設定(ssh) |
預設的SSH安裝好是不限制root登入的
所以如要限定root遠端登入!有兩種方式
1.透過修改sshd_config來達成目的
vim /etc/ssh/sshd_config
PermitRootLogin no <預設是yes 建議改成no
2.透過修改PAM模組驗證來達成限制ssh的遠端服務roo限制(
vim /etc/pam.d/ssh
以ubuntu 7.10預設是沒使此模組限制故我們新增此群組
auth required pam_securetty.so
驗證的類別
auth:檢驗使用者的身份驗證
驗證的控制標準
required:模組的驗證必須要成功,否則就會回傳一個 failure 的訊息
此pam_securetty 功用就是預防不安全登入環境且是針對root
此模組啟用會讀取/etc/securetty
(此方式也適用telnet,如果telnet要開放root就把
/etc/pam.d/login裡的pam_securetty.so 移除
或rm /etc/securetty )
以下介紹一個針對user的限制登入的方法
touch /etc/nologin
這樣所有使用者都無法登入除了root以外...
ps. 這題LPI-117-102有考到這題唷!
| [+/-] |
[iptables]如何修改iptables讓對方Ping不到本地主機 |
今天來講一下如何讓對方ping不到我們自己架的主機
不管在那一台電腦主機下'ping'指令
都會發出一個ICMP類型為8(echo-request)的封包
意思就像信號彈一樣!當對方收到會回應一個類型為0(echo-replay)封包給我們
成功就會開始跑
64 bytes from 168.95.1.1: icmp_seq=1 ttl=249 time=34.1ms
的訊息!
所以我們只要用iptables將來自ICMP類型為8的封包給擋下來丟掉
嘿嘿!
對方就無法ping成功!
就會出現REquest timed out.等字樣 但不代表對方網路不通唷!
通常我們建立防火牆規則不會一條一條建立而是建立一個sheel Script
放在/etc/rc.local讓他開機自動載入
(rc.local通常是runlevel最後一個載入的程序稿S99rc.local)
vim nat.ip
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
ipatbles -P OUTPUT ACCEPT /開頭先開放filter表格三個鍵的封包都接受~之後在限制/
iptables -t filter -F /清除filter表格裡的所有rule/
iptables -t nat -F /清除nat表格裡的所有rule/
iptables -t filter -X /移除filter表格裡的所有自訂鏈/
iptables -t nat -X /移除nat表格裡的所有自訂鏈/
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
(-p指令封包為icmp type為echo-request) 封包是類型8就丟棄
一開始要清除在設定rule是有考量的!如果不刪除每執行一次nat.ip
就會一直加上去!所以開頭都會建議要先刪除在新增 ~比較好唷!
iptables很有效率!修改完馬上./nat.ip 馬上就可以測試!
2008年3月23日 星期日
| [+/-] |
[SSH]安全檔案傳輸靠ssh ,Ftp拋腦後 |
透過ssh傳輸檔案
早期都是靠Ftp與如果要匿名登入主機都是用ncftp
後期可以用lftp ~好用且操作很像bash
當然ssh是比較安全的!但百密無一疏在安全的機制都會有
漏洞!只要縮小一些範圍的主機與ip~就沒什麼好擔心
假設家裡架設了一台sshd 主機
Client端怎麼連線
sshd [host] host可以是ip與網址
如果要抓檔案 (SSH FTP功能)
用這個檔案
sftp [host]
sftp user@hosname
sftp -l username hostname
都可
如果登入不想輸入秘碼 那麼就要建立金鑰
1.在client 端打ssh-keygen -t rsa (version 2 的 RSA )演算方法
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 按下Enter
Enter passphrase (empty for no passphrase): 按 Enter
Enter same passphrase again:按 Enter
Your identification has been saved in /root/.ssh/id_rsa. 私鑰
Your public key has been saved in /root/.ssh/id_rsa.pub. 公鑰
ps. /.ssh目錄會自動建立 前面的/root 是看你現在是用那一個使用者登入
私鑰放在原目錄不動,將公鑰上傳到Server端的/root/.ssh/裡
scp id_rsa.pub root@host:~/
id_rsa.pub 100% 231 0.3KB/s 00:00
連到Server上將公鑰增加到 authorized_keys 檔案中(預設沒這個檔案)
cat id_rsa.pub >>authorized_keys 此時.ssh/下會產生一個檔案
exit 離開
在client 端在連線一次 就不用密碼了!
2008年3月7日 星期五
| [+/-] |
[OSI]OSI的7層架構 |
OSI模型是一種制定網路標準都會參考的概念性架構,依據網路運作方式,OSI模型共切分成7個不同的層級,每級按照網路傳輸的模式,定義所屬的規範及標準。
所謂的OSI,是由國際化標準組織(ISO)針對開放式網路架構所制定的電腦互連標準,全名是開放式通訊系統互連參考模型(Open System Interconnection Reference Model),簡稱OSI模型。該模型是一種制定網路標準都會參考的概念性架構,並非一套標準規範,也不是用來提供實現的方法,而是透過觀念描述,協調各種網路功能發展時的標準制定。
依據網路運作方式,OSI模型共切分成7個不同的層級,每級按照網路傳輸的模式,定義所屬的規範及標準。由具體到抽象的網路傳輸方式層次來看,7層分別為實體層、資料連結層、網路層、傳輸層、會議層、展示層及應用層。
OSI模型的好處在於,它細分每個功能,在發展網路功能及教育訓練上有很大的幫助。產品開發時,只要依據各個層級規範,專注發展即可;在教學時,透過OSI模型解釋網路運作的架構,也較容易讓初學者了解。但是某些層級的功能仍不易掌握,像是會議層及展示層。相較於網路層或應用層,它們規範的標準若有似無,實際上的應用也不多見。
第一層︰實體層(Physical Layer)
實體層是OSI模型的最底層,它用來定義網路裝置之間的位元資料傳輸,也就是在電線或其他物理線材上,傳遞0與1電子訊號,形成網路。實體層規範的內容包含了纜線的規格、傳輸速度,以及資料傳輸的電壓值,用來確保訊號可以在多種物理媒介上傳輸。
網路線、網路卡與集線器(Hub),都是平常容易接觸到的實體層設備。網路線包括辦公室及機房內常見的RJ-45 UTP雙絞線、有線電視使用的同軸電纜,以及應用在骨幹網路的光纖纜線等。不過,對無線網路而言,只要可以傳輸電波的介質,都屬於它的傳輸媒介。
集線器指的是單純串接線路,再以廣播方式傳輸資料的設備。市面上所見的複合式集線器設備,例如Switching Hub(交換式集線器),是廠商依照市場需求所開發的產品,通常包含些許資料連結層的功能,就OSI的規範來說,它並不完全是一個集線器。
第二層︰資料連結層(Data Link Layer)
資料連結層介於實體層與網路層之間,主要是在網路之間建立邏輯連結,並且在傳輸過程中處理流量控制及錯誤偵測,讓資料傳送與接收更穩定。資料連結層將實體層的數位訊號封裝成一組符合邏輯傳輸資料,這組訊號稱為資料訊框(Data Frame)。訊框內包含媒體存取控制(Media Access Control,MAC)位址。而資料在傳輸時,這項位址資訊可讓對方主機辨識資料來源。MAC位址是一組序號,每個網路設備的MAC位址都是獨一無二的,可以讓網路設備在區域網路溝通時彼此識別,例如網路卡就是明顯的例子。
不少網路協定是在資料連結層上運作,我們較常聽到的是非同步傳輸模式(Asynchronous Transfer Mode,ATM),以及點對點協定(Point-to-Point Protocol,PPP)。前者是早期網路發展的通訊協定,由於單次傳輸量很小,適合用作語音傳輸;後者則是在我們使用ADSL時,會透過這項協定連接ISP,從而連上網際網路。
網路交換器(Switch)是這個層級常見的設備,主要在區域網路上運作,能依據MAC位址,將網路資料傳送到目的主機上。交換器一般分為可設定式與免設定兩種,前者可以設定流量控制或設定子網路分割,後者僅傳輸網路資料,不具其他進階功能。
第三層︰網路層(Network Layer)
網路層定義網路路由及定址功能,讓資料能夠在網路間傳遞。這一層中最主要的通訊協定是網際網路協定(Internet Protocol,IP),資料在傳輸時,該協定將IP位址加入傳輸資料內,並把資料組成封包(Packet)。在網路上傳輸時,封包裡面的IP位址會告訴網路設備這筆資料的來源及目的地。由於網路層主要以IP運作為主,故又稱為「IP層」。除了IP,在網路層上運作的協定還包含IPX及X.25。
路由器及Layer 3交換器即屬於第三層的網路設備,主要以IP作為資料傳輸依據,它們大多在企業機房內運作,不過我們也常看到有些設備也同時包含網路層功能,如IP分享器,以及俗稱小烏龜的ADSL用戶終端設備(ADSL Terminal Unit-Remote,ATU-R)。
第四層︰傳輸層(Transport Layer)
傳輸層主要負責電腦整體的資料傳輸及控制,是OSI模型中的關鍵角色,它可以將一個較大的資料切割成多個適合傳輸的資料,替模型頂端的第五、六、七等三個通訊層提供流量管制及錯誤控制。
傳輸控制協定(Transmission Control Protocol,TCP)是我們常接觸具有傳輸層功能的協定,它在傳輸資料內加入驗證碼,當對方收到後,就會依這個驗證碼,回傳對應的確認訊息(ACK),若對方未及時傳回確認訊息,資料就會重新傳遞一次,以確保資料傳輸的完整性。
第五層︰會議層(Session Layer)
這個層級負責建立網路連線,等到資料傳輸結束時,再將連線中斷,運作過程有點像召集多人開會(建立連線),然後彼此之間意見交換(資料傳輸),完成後,宣布散會(中斷連線)。
有很多應用服務運作在會議層上,我們常接觸到的是NetBIOS names,這是一種用來識別電腦使用NetBIOS資源的依據。我們使用Windows系統時,開啟網路上的芳鄰,或是用到「檔案及列印分享」時,通常會看到群組及電腦名稱,這些就是NetBIOS names定義的。
第六層︰展示層(Presentation Layer)
應用層收到的資料後,透過展示層可轉換表達方式,例如將ASCII編碼轉成應用層可以使用的資料,或是處理圖片及其他多媒體檔案,如JPGE圖片檔或MIDI音效檔。
除了轉檔,有時候當資料透過網路傳輸時,需要將內容予以加密或解密,而這個工作就是在展示層中處理。
第七層︰應用層(Application Layer)
應用層主要功能是處理應用程式,進而提供使用者網路應用服務。這一層的協定也很多。使用者常見的通訊協定,有DHCP(Dynamic Host Configuration Protocol)、FTP(File Transfer Protocol)、HTTP(HyperText Transfer Protocol)及POP3(Post Office Protocol-Version 3)等,依據不同的網路服務方式,這些協定能定義各自的功能及使用規範等細部規則。
屬於第七層的應用軟體,像是網路瀏覽器(IE、Firefox)、電子郵件、線上遊戲、即時通訊(MSN Messenger、ICQ)等。上述軟體均透過單一或多種通訊協定,提供各類網路應用服務,像是網路瀏覽器藉由HTTP的溝通,即可呈現圖文並茂的網頁。
2007年12月22日 星期六
| [+/-] |
[EPC]安裝ATHEROS-AR5006EG無線網路卡於Ubuntu 7.04上 |
首先~這個方式幾乎都適用於Aheros網路晶片上面
先來介紹一下幾種Atheros chipset安裝於Linux上的方式
1.官方的Madwifi方式
像atheros 所提供的madwifi中有hal(只有binary)
Atheros並沒有release driver的source code出來...而且他們都是kernel module
不過是否GPL規範~就要大家來定奪了~
以之前華碩EPC的案例各位可以參考一下
Asus 補齊 Eee PC 的原始碼來符合 GPL 規範
2.延用xp驅動程式的ndiswrapper (以下我們要介紹此方式安裝)成功率較高
ndiswrapper的產生並不意外~原因某些硬體供應商只提供 Windows 系統驅動
程式卻拒絕提供 Linux 驅動程式ndiswrapper 可以在 Linux 系統上載入
NDIS (windows network driver API) 驅動程式
原理:將 Win32 版的 Binary 驅動程式模擬成一個 Linux 的驅動模組
3.延用xp驅動程式的Linuxant
Linuxant 的 DriverLoader 是一套相容包裝軟體(compatibility-wrapper)。
透過 DriverLoader,便可在 Linux x86 系統上,使用硬體廠商提供的標準
Windows NDIS驅動程式。許多用戶不耐等待廠商釋出原生 Linux 驅動程式,轉而安裝
DriverLoader,以便於 Linux 環境下
實際過程:
EPC一台
在安裝好Ubuntu 7.04時,所屬Atheros 無線網卡因為核心沒內建驅動程式所以
在透過lspci |grep -i ethernet時,並無法抓到正確的Chipset型號
此時請更新此套件update-pciids
sudo update-pciids
此時在lspci 看一下 發現已經可以秀出
Ethernet controller: Atheros Communications, Inc. AR5006EG 802.11 b/g ...
成功看到之後在來就是要安裝驅動程式
筆這這邊用第2種方式:apt-cache search ndiswrapper 找最新版
apt-get install ndiswrapper-utils-1.9
ndiswrapper-common 相依會自動安裝此套件
ndiswrapper -i net5211 載入xp驅動(請先將相關檔案置同一目錄)
ndiswrapper -l 查看有無載入
net5211 : driver installed 表示成功載入
device(168c:001c)present(alternate driver:ath_pci)
ndiswrapper -m 建立 wlan0 到 ndiswrapper 的 alias(也可以建eth%)
sudo modprobe ndiswrapper (載入MOD)
echo ndiswrapper > > /etc/modules 加入開機自動載入此模組 ok
記住要重新開機~才會生效 雖然iwconfig 有抓到wlan0這個介面了
iwlist wlan0 scanning 在重開機已經能夠偵測到週邊的AP了~
有很多應用程式只能偵測到 eth%d 的裝置,
對於 wlan%d 的支援度並不是很好,如:pppoeconf 等等。
如果您希望在載入 ndiswrapper 時所使用的裝置名稱是 eth%d 的話,
可以替而用以下指令來載入 ndiswrapper: # echo 'ndiswrapper if_name=eth%d' >> /etc/modules
參考資料~使用 NdisWrapper 來載入無線網路卡
接下來~介紹第1種方式
筆者有嘗試安裝但是無法成功會出現
wifi%d unable to attach hardware: 'Hardware revision not supported' (HAL status 13)
此訊息中文解釋是:wifi%d: 無法附有硬體: ' 硬體修正沒支持' (HAL 狀態13)
這個問題目前還沒找到解決的方式~可能要等待Madwifi.org釋出新版吧!
安裝步驟~
1.手動下載madwifiwget downloads.sourceforge.net/madwifi/madwifi-0.9.3.3.tar.gz
2.解壓縮tar -jzxf madwifi-0.9.3.3.tar.gz
3.進入解壓縮出來的目錄madwifi-0.9.3.3並安裝cd madwifi-0.9.3.3
make
make install
modprobe ath_pci
reboot
正常來說這樣就完成了~
查看方式
lshw -C network 觀看網路裝置詳細資料
dmesg |grep wifi
wifi%d unable to attach hardware: 'Hardware revision not supported' (HAL status 13)
dmesg |grep ath
ath_hal: module license 'Proprietary'taints kernel
ath_hal:0.9.18.0 (AR5210,(AR5211,AR5212,RF5111,RF5112,RF2413,RF56413)
ath_pci:0.9.4.5 (0.9.3.3)
第三種方式其實跟第2種方式差不多~但是我也沒成功
1.先至linuxant官網下載DriverLoaderwget www.linuxant.com/driverloader/wlan/full/archive/dldrinstall.run
2.安裝~會自動連到linuxant 下載所需deb套件sh dldrinstall.run
1.Generic package : driverloader_2.39_i386.deb.zip **Recommended **
2.pre-compiled package : driverloader_2.39_k2.6.20_16_generic_ubuntu_i386.deb.zip
which one do you want to install ([1]2/help/none)? 1
please point your browser to :
http://127.0.0.1:18020/
以上畫面有精減一些~選1是安裝套件
也可點這邊下載安裝
3.接著請到x windows下用firefox在網址上打http://127.0.0.1:18020/
接這會請您輸入root密碼輸入完
進入之後可以選擇您的xp驅動 選完按ok~就可以~
2007年12月15日 星期六
| [+/-] |
[Ubuntu]如何在文字模式底下設定無線上網呢 |
假設已經有抓到無線網路卡~如何在文字模式底下設定無線上網呢?
先介紹一些無線網路工具
ifconfig, iwconfig, iwspy, iwlist, iwevent, iwpriv, wireless.
手工設定:
底下假設無線網路卡介面為:eth1
#先使用iwlist eth1 scanning 來搜尋附近的無線基地台(AP)
找到之後看到ESSID地方填入下方
iwconfig eth1 essid "xxxxx" key "xxxxxxxxxx"
ifconfig eth1 up or dhclient
or
/etc/init.d/networking restart
如何看已成功連線呢? root@ubuntu:~#iwconfig eth1
eth1 802.11b/g NIC ESSID:"BLW-VBIRD"
Mode:Managed Frequency=2.437GHz Access Point: 00:90:CC:D6:A4:1C
Bit Rate:54Mb/s
Retry:off RTS thr=2432 B Fragment thr:off
請看上面Bit Rate:54Mb/s <--有看到這個表示已跟AP連線成功
在打ifconfig eth1 看有無分配到ip 有的話就ok
沒有配到ip就重新啟動網卡
/etc/init.d/networking restart
手動設定(就是打在/etc/network/interfaces裡面)
root@ubuntu:~#vim /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
wireless_essid XXXXXXXXXX
wireless_key XXXXXXXXXX
設定完重新reboot 就ok!
這是筆者在ubuntu 7.04上遇到的問題
常常重新開機明明有在interfaces裡設定無線基地台名稱
開機就是抓不到甚至打iwconfig eth1 速度都是0~Bit Rate:0Mb/s
打ifconfig eth1也抓不到ip
此時只好在手動設定一次iwconfig eth1 essid "XXX" key "XXX"
#請網卡透過dhcp協定在取得一次ipdhclient eth1
這樣應該就能夠抓到ip了!
2007年11月30日 星期五
| [+/-] |
[Ubuntu] virtualbox 橋接設定(固定ip實作與解說) |
在上一篇virtualbox 橋接設定應用一文裡,筆者測試結果
為只能夠在Guest端上網,則Host端會變的無法上網
後來的知原因,因為route表裡的Default getaway裡
在筆著的網路環境裡有預先設定一組10.10.X.X的Getaway
導致在新增Bridge為br0時,bro不是預設的Getaway
既然我們要透過橋接方式所以Bridge必需為最後能對外送出封包的介面
既然知道問題出在那,以下將用指令版的方式並且做成指令稿且開機自動載入
1.開始一樣要先安裝所需要指令的套件sudo apt-get install uml-utilities (tunctl指令)
sudo apt-get install bridge-utils (brctl指令)
2.設計指令稿Script( /usr/sbin/virbox.bbroot@ubuntu # vim /usr/sbin/virbox.bb (自設檔名)
#!/bin/bash
#新增一個TAP介面,[username]為登入xwindows的使用者
tunctl -t tap1 -u [username]
# 新增一個橋接介面
brctl addbr br0
#將真實網卡(eth0)的ip對應到br0上,並啟動bro這張網卡(up)
ifconfig br0 10.10.52.12 up
#將tap1橋接到bro上
brctl addif br0 tap1
#將eth0橋接到bro上
brctl addif br0 eth0
#意思就是將eth0接到br0 | bro在接到tap1 這樣Guest端就用tap1上網
#形成一個串聯,橋接的意思
#重頭戲,因為我原先有設定一組預設路由所以這邊要先刪除在重建
route del default
#建立由br0出去的預設路由
route add default gw 10.10.52.1 dev br0 (ip請自行替換)
#啟動剛建立的tap1介面
ifconfig tap1 up
設定完之後修改rc.local開機載入vim /etc/rc.local>
在文內exit 0的前面輸入
. /usr/sbin/virbox.bb
設定好reboot 重新開機 進到Xwindow
打開virtualbox 點選網路卡地方
先選取你安裝好的虛擬系統在點選"細節"> 網路>選第一個配接卡0
附掛到下拉選取"主端介面",在底下介面名稱填入"tap1"按確定開機即可
然後進到xp系統裡設定固定ip必定要為同一網段(10.10.52.x)這樣就完成了!
ps: 介紹橋接指令
brctl addbr <介面名稱> # 新增橋接介面
brctl addif
brctl delbr <介面名稱> #刪除介面
如要刪除無法刪除請先
ifconfig br0 down 先停用在刪除
tunctl -t tap1 -u
2007年11月29日 星期四
| [+/-] |
[Ubuntu] virtualbox 橋接設定與Host端地位相同應用 |
今天討論這個話題為什麼要用橋接方式來上網,透過Nat就好了ㄚ
其實透過nat與橋接(主端介面)是不一樣的
小古來舉個例子:
假設我在公司上網,公司的網路環境是透過DHCP+NAt來配發IP
(範圍在10.x.x.x)Dns:168.95.1.1
假設你是員工你要上網你可以這樣做:
1.自行設定一組static ip(公司有規定在範圍之內比如:10.10.40.x)
2.設定自動取的ip (也就是Dhcp配給你的)
問題一:我在公司電腦灌了 virtualbox而裡面的os我們稱Guest端
在連線介面我選擇了nat來當網路介面,普通上網msn都ok
但是如果在連線上或者您需要玩一些遊戲如世紀2又或者vpn
我實際以Guest端裡的winxp內建Vpn功能連線到我遠端所架設vpn server
但卻始終無法連上,總是721遠端電腦無回應
此時就需要透過橋接Mode 來讓Guest裡的OS在區域網路中與HOST的地位是相同的
所以你說有沒有用了! 見仁見智摟! 對於我來說是有用的 ^_^
上面所提到vpn的應用很廣,透過vpn在公司打世紀也是一個應用
更何況以我這種是跨三層
公司nat配ip>virtualbox nat>虛擬在虛擬 所以連線上是ok但是應用是有些就不ok
來看實作:
這邊假設系統都已經安裝好virtualbox也安裝好,安裝可參考virtualbox 安裝詳解及過程
VirtualBox設定網路時選擇預設是NAT模式就可以上網
所以我們必需先建立虛擬網路設備才能夠過主端介面指定介面上網
首先,先安裝必需套件sudo apt-get install uml-utilities (tunctl)
sudo apt-get install bridge-utils (brctl)
安裝好之後換設定部份#將登入xwindows的"使用者名稱"加到'uml-net'群組內
sudo gpasswd -a "使用者名稱" uml-net (建議root也加進去)
#也可vim /etc/group 手動加入群組
設定好,建議重新開機reboot
一開始為Host os建立橋接界面(Bridge)和虛擬網卡設備(tap device)
為了讓ip取的透過bridge 不是透過eth or tap
新增網路介面於ubuntu裡,虛擬網路介面(tap device)命名為 "tap0"sudo vim /etc/network/interfaces
auto tap0
iface tap0 inet manual (設定手動)
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user vboxuser
#接下來設置,橋接界面(Bridge)
auto br0
iface br0 inet dhcp
bridge_ports all tap0
#實際上筆者這樣設定之後,無法自動取的ip
#所以我還是在guest os裡手動設定公司給的ip
設定好之後/etc/init.d/networking restart
在來就是要設定"主端介面"為tap0
設定方式有兩種:
一
#將VNAME換成你虛擬主機名字
VBoxManage modifyvm "VNAME" -hostifdev1 tap0\
二
先選取你安裝好的虛擬系統在點選"細節"> 網路>選第一個配接卡0
附掛到下拉選取"主端介面",在底下介面名稱填入"tap0"按確定開機即可
這樣你的主機和虛擬主機就成了lan中地位相同的兩台機器
還可以參考另一篇固定ip制的設定virtualbox 橋接設定(固定ip實作與解說)
2007年11月28日 星期三
| [+/-] |
[Ubuntu]關於Dhcp架設時遇到的No DHCPOFFERS received |
其實這個問題大概有幾種可能性
1.Dhcp的監聽設定設錯(這種情況會發生在接多張網卡)
也就是假設你有三張網卡分別是eth1,eth2,eth3 分成三個子網路
在ubuntu裡,監聽設定是在vim /etc/default/dhcp3-server
INTERFACES="" <--預設是這樣
但是你有兩張以上要監聽就是要配發的ip則需要設定多組
INTERFACES="eth1 eth2 eth3" <-一定要用空一格隔開唷 重要
這樣才會正常
2.網卡故障
請換一張網卡試看看摟!
3.防火牆檔住
請確認UDP 封包67有無檔住 內部>nat主機
因為原理是client廣撥目的封包:udp封包255.255.255.0 port 67 至dhcp server端
而client 端自己則是來源端:0.0.0.0 port 68 所以確認一下如果你防火牆
有做雙向管制請確認一下是不是把這樣的封包給管制住了!
2007年11月26日 星期一
| [+/-] |
[Ubuntu]ubuntu 7.10實作QOS頻寬管制(上下載) |
為什麼要頻寬管制,因為有人佔住了頻寬,所以我們要加以管制
拿我本人來舉例好了!家裡有四五台電腦,但是姐姐又篇愛用Foxy來抓電視劇
偏偏她抓的時間都是我在玩世紀帝國征服者的時間
有玩過的都知道,在遊戲中有烏龜是會被人唾棄的
所以基於以上這些理由,我必需頻寬管制
(切記,以下是在ubuntu 7.10底下實作)
(還有透過TC指令是不需要整個系統重灌)
1.首先請先確定你的linux系統核心(kernel}有無支源HTBgrep "HTB" /boot/config-`uname -r`
有秀出config_net_sch_htb=m 就ok
2..確認有無裝iproute 套件 因為套件裡需要用到tc指令apt-cache search iproute 確認看看 基本上ubunut7.10上已經有內建在核心了
apt-cache show iproute 顯示套件資訊(題外話,供參考)
apt-cache showsrc iproute顯示原始碼相關資料(題外話,供參考)
apt-cache depends iproute 秀出相依性(題外話,供參考)
開始實作,但實作前請先到這邊看一下基本語法
然而這邊已假設您已經看過上述網頁 這邊引用文章裡的重要語法來說明
有礙於篇幅,只能針對重點來說明:
Linux QoS 的佇列規則有兩種:CBQ,HTB
CBQ (Class Based Queueing) 的設定比較複雜,但可設定的東西較多,彈性較大
HTB (Hierarchy Token Bucket) 是 CBQ 的改良版 ,設定較精簡,效能也比 CBQ 來的好
所以以下步驟是以 HTB 為主。
Linux QoS 過濾器有兩種:u32,fw
u32: 設定比較複雜,需懂封包結構,才有辦法設定
fw:fw 是靠 iptables 給封包貼標籤,設定比較簡單
所以以下步驟是 fw 為主。
另外您要對iptables 也要稍為有一些概念
iptables 指令:
Linux 負責防火牆功能的,是一個叫 NetFilter 的模組,而 iptables 就是用來設定 NetFilter 模組的指令。
tc 指令:
Linux 負責QoS (頻寬管制) 功能的,是一個叫 Traffic Control 的模組,而 tc 就是用來設定 Traffic Control 模組的指令。
以下所有的編輯內容將會透過shell script來完成
這樣除錯也方便,不是嗎! ^^
(底下盡可能將在實作上遇到的一些轉換即路由封包的來源原理透過比較白話的方式表達)
實作開始:
筆者家中網路環境是:中華電信 8M / 640K
先了解一下單位數
ADSL 的頻寬單位,是 bps (bits per second)
所以-->8M等於1024*8=8192k bps
但因為HTB 佇列規則用的是 KByte/s
故8 bps = 1 Byte/s
所以8192/8=1024 kb/s
下載總頻寬 8Mbps= 1024 KB/s
上傳總頻寬 640kbps=80 KB/s
接下來至hinet測速度網站得知大約值
[ 5614 K bps ] (相當於 688 K bytes/sec )<--這是筆者這邊測的數據不代表你也是這個= =
也就是說每秒最高可達688 kb(下載)當然因受距離與環境限制所以這個值還算可以接受
我將這個平均值除以2取整數為300kb/s來當做我要Qos的總頻寬
上載部份80/2=40kb/s
實際規劃瓜分數據
下載總頻寬=300kb/s
上傳總頻寬=40kb/s
將現有頻寬分為三塊
1.高優先且頻寬給最多 (10:10)
2.普通使用者(10:20)
3.常透過Foxy將頻寬佔住的 畫分少量頻寬(10:30)
(前者(160)為保證頻寬,後者(200)為最大頻寬)
1.(10:10) 160~200 101
2.(10:20) 90~150 102
3.(10:30) 50~100 103
原始碼/usr/local/bin/qos
以下內容是根據上面的原則來規範
(您必需知道的是在linux核心限制,CBQ與HTB最多能定義8層,但因包
含最上層佇列規則,所以實施使用只能定義7層)#!/bin/bash
#一開始就清除所有的佇列規則並且忽略錯誤訊息(2>/dev/null)
tc qdisc del dev eth1 root 2>/dev/null
#定義最頂層(根)佇列規則,並指定 default 類別編號
tc qdisc add dev eth1 root handle 10: htb default 20
# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev eth1 parent 10: classid 10:1 htb rate 300kbps ceil 300kbps
# 定義第二層葉類別(rate 保證頻寬,ceil 最大頻寬,prio 優先權)
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 160kbps ceil 200kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 90kbps ceil 150kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 50kbps ceil 100kbps prio 2
#------定義各葉類別的佇列規則---------------
#parent 類別編號,handle 葉類別佇列規則編號
#因上面已經用htb來頻寬管理了故後面用簡單無qos的佇列規則piffo即可
tc qdisc add dev eth1 parent 10:10 handle 101: pfifo
tc qdisc add dev eth1 parent 10:20 handle 102: pfifo
tc qdisc add dev eth1 parent 10:30 handle 103: pfifo
#---------------set filter--------------------------
#FW可以依標籤將封包分類
#指定貼有 10 標籤 (handle) 的封包,歸類到 10:10 類別,以此類推
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 30 fw classid 10:30
#---------------set iptables mangle-----------------
#利用防火牆將封包貼上標籤
iptables -F -t mangle
iptables -t mangle -A POSTROUTING -d 192.168.1.99 -j MARK --set-mark 30
大致上是這樣子,設定完記的為qos檔加上執行權限chmod 700 /usr/local/bin/qos
接下來,開機要執行將qos檔加入/etc/rc.local裡就可以摟!
如果要測試可以打source qos 或 . qos都可以唷 兩張方式
然後用tc qdisc 觀看結果
筆者測試方式是先用wget ftp://ftp.adsl.hinet.net/test_100m.zip
此檔為中華電信網站所提供測試網站的檔案(下載速度測試,檔案大小 100 MB)
測試電腦ip為192.168.1.99
root@ubuntu # wget ftp://ftp.adsl.hinet.net/test_100m.zip
==>SYST...done. ==> PWD...done.
.....
11%[ ]7,652,144 623.70K/s
第一次測試差不多500~650kb左右 然後. qos 載入我剛打好的指令稿
在跑一次
root@ubuntu #source qos(秉持著沒有消息就是好消息的原則)成功載入
root@ubuntu # wget ftp://ftp.adsl.hinet.net/test_100m.zip
....
9%[ ]7,652,144 94.70K/s
實際測試速度果然在控制範圍之內100kb之內
這是因為上面我們定義mark 30的保證頻寬50kbps最大頻寬為100kbps
保證一定在50以上但不會超過100,但這是因為Mark10與20都沒有人在下載東西
你要注意Mark 30的優先順序是2(越小優先權越高),如果10與20都有電腦在抓東西
那麼肯定30這台電腦絕對跑不到94.70應該就在50左右,頻寬會優先分給prio為0的電腦唷!
另外來解釋一下這一行 為什麼是下載是POsTROUTING 而不是PREROUTINGiptables -t mangle -A POSTROUTING -d 192.168.1.99 -j MARK --set-mark 30
這邊會一併解釋下載與上傳的原理
因為是透過NAT加兩張網卡,一張對內(eth1)一張對外(ppp0)
故會用到兩種串鍊(chains)
正常NAT架構是封包進來>(PREROUTING)>(INPUT)>本機電腦
封包出去<(POSTROUTING)<(OUTPUT)< 本機電腦
先要有一個概念就是內部電腦不管下載或上傳都是外送流量到nat主機上
內部電腦(pc)下載的解釋:
pc向internet請求封包(可想成在瀏覽網頁突然要下載東西)然後nat主
機收到將封包傳給eth1(eth1在將封包外送給pc)所以下載就是eth1的
外送流量,既然是將封包送出去所以當然是用(POSTROUTING)這個鍊摟!
內部電腦(pc)上傳的解釋:
假設內部有架設web Server,路人甲上網瀏覽透過你的網站下載了一個檔
案,即是外網向PC請求封包,在封包進入對外PPP0介面時即透過PREROUTING
轉向內部在透過PPP0外送流量給外網。
所以上傳是設定在PPP0此介面,以下將會介紹如何頻寬管制(上傳篇)
頻寬管制上傳實作設定:
上傳總頻寬為40kb
這邊一樣分成三塊
佇列規則根為40: (自取名稱)
1.(40:10)101 高優先且頻寬給最多
2.(40:20)102 普通使用者
3.(40:30)103 濫用網路的使用者
這邊只基本的將要限至上傳的葉類別分成三塊
原始碼/usr/local/bin/qosppp#!/bin/bash
#一開始就清除所有的佇列規則並且忽略錯誤訊息
tc qdisc del dev ppp0 root 2>/dev/null
#定義最頂層(根)佇列規則,並指定 default 類別編號
#default就是當沒有任何來源被指定標籤就會套用這個Default 20
tc qdisc add dev ppp0 root handle 40: htb default 20
# 定義第一層的 10:1 類別 (上傳總頻寬)
tc class add dev ppp0 parent 40: classid 40:1 htb rate 40kbps ceil 40kbps
# 定義第二層葉類別(rate 保證頻寬,ceil 最大頻寬,prio 優先權)
tc class add dev ppp0 parent 40:1 classid 40:10 htb rate 24kbps ceil 40kbps prio 1
tc class add dev ppp0 parent 40:1 classid 40:20 htb rate 10kbps ceil 20kbps prio 2
tc class add dev ppp0 parent 40:1 classid 40:30 htb rate 6kbps ceil 10kbps prio 3
#------定義各葉類別的佇列規則---------------
#parent 類別編號,handle 葉類別佇列規則編號
#因上面已經用htb來頻寬管理了故後面用簡單無qos的佇列規則piffo即可
tc qdisc add dev ppp0 parent 40:10 handle 101: pfifo
tc qdisc add dev ppp0 parent 40:20 handle 102: pfifo
tc qdisc add dev ppp0 parent 40:30 handle 103: pfifo
#FW可以依標籤將封包分類
tc filter add dev ppp0 parent 40: protocol ip prio 100 handle 10 fw classid 40:10
tc filter add dev ppp0 parent 40: protocol ip prio 100 handle 20 fw classid 40:20
tc filter add dev ppp0 parent 40: protocol ip prio 100 handle 30 fw classid 40:30
#利用防火牆將封包貼上標籤
iptables -t mangle -A PREROUTING -s 192.168.3.11 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.12 -j MARK --set-mark 30
一樣將原始碼/usr/local/bin/qosppp 加在/etc/rc.local裡讓開機載入!
實作完成後來透過內部的HTTP SERVER測試一下 以192.168.1.12 來測試
透過外網來抓取內部的檔案就等於是192.168.1.12這台http server的上傳
果然在實測部份每秒的傳輸速度都控制在6~10kb/s左右
以上規則您可以照您的需求來變更~
如果您有更好的意見歡迎一起討論
2007年11月23日 星期五
| [+/-] |
[linux]iptables設定讓NAT內主機能玩征服者入侵(AOE) |
這個問題其實存在很久! 就是世紀帝國這種點對點的遊戲
必需要是真實IP才能夠連上,當然以現行技術
已經有多方式能夠用偽裝的方式來連接
先說明世紀帝國的PORT為(6073,47624,2300-2400)這個範圍之內
常見的有:
1.NAT (DMZ)非軍事區 將虛擬ip設在DMZ中 即可對外連線
2.虛擬伺服器:打開世紀帝國所需使用的ports並將其對映到你的電腦虛擬IP位置
實作:在NAT主機上的設定要新增兩條iptables ruleIPTABLES -t nat -A PREROUTING -p tcp --dport 2300:2400 -i ppp0 -j DNAT --to 192.168.2.61
IPTABLES -t nat -A PREROUTING -p udp --dport 2300:2400-i ppp0 -j DNAT --to 192.168.2.61
基本上設定2300-2400,就能夠找的到遊戲了!
如果您是一般的IP分享器俗稱Switch/hub,設定方式也大同小異
通常設定會在nat的選單裡面,各家機型太多不在多做討論!
2.VPN
Hamachi 下載點是採用Vpn的方式把所有人都拉進同一個區網 已前用過
3.Vnn
2007年11月22日 星期四
| [+/-] |
[Linux]Qos 頻寬管制 簡介 |
頻寬管理器(英文簡稱Qos)
主要是用來管制每台電腦的上下傳頻寬問題
避免因其中一台電腦使用p2p或Foxy等相關軟體
造成整個公司、社區、區域網路,造成嚴重賽車也就是lag
也能夠避免大家搶頻寬的問題
至於實作部份,之後在討論
這邊介紹一些相關連結與討論
探討Qos頻寬管理器
Coyote Linux 頻寬管制 (QoS) 設定教學
Linux QoS 參考用原始碼
五篇以免費軟體路由器達成頻寬管制 (QoS)
Linux Layer 7 Netfilter QOS 實作成功紀錄 ( kernel 2.6.14)
打造 Linux 具有 L7-Filter Function
淺談 QoS 和 L7-Filter
BRAZILFW的簡介與安裝
打造 Layer7 QOS
2007年11月21日 星期三
| [+/-] |
[Ubuntu]如何架設Dhcp 伺服器(含NAT)三張網卡 |
在這一篇如何架設Dhcp 伺服器(含NAT)兩張網卡裡我們是針對兩張網卡
一張對外,一張對內來設定
如果有一些特別的需求時,必需將網路分成不同網域
此時能夠在增加一張網卡可以達到此需求
設定方式也僅是在之前的設定上在新增上我們需要的網域設定
首先來看看新增一張網卡要做那些設定:
1.新增網卡eth2 設定組態
2.新增/etc/dhcp3/dhcpd.conf 並新增subnet 子網路網域
3.新增iptables防火牆rule (postruting)
4.新增/etc/default/dhcp3-server 裡的監聽介面
筆者在此新增的網卡給範圍內都是xp電腦使用
1.首先來看網路設定vim /etc/network/interfaces
auto eth1
iface eth1 inet static (靜態)
address 192.168.1.1 (內部ip)
netmask 255.255.255.0(子網路遮罩)
network 192.168.1.0 (網域)
broadcast 192.168.1.255 (廣撥位址)
dns-nameservers 168.95.1.1 (可省略)
新增底下eth2資訊
/etc/network/interfaces
auto eth2
iface eth2 inet static (靜態)
address 192.168.2.1 這次設定為2的網段
netmask 255.255.255.0(子網路遮罩)
network 192.168.2.0 都要改唷
broadcast 192.168.2.255 (廣撥位址)改
dns-nameservers 168.95.1.1 (可省略)
2.再來是設定dhcp子網路設定sudo vim /etc/dhcp3/dhcpd.conf
ddn-update-style none;
subnet 192.168.1.0 netmask 255.255.255{
range 192.168.1.11 192.168.1.31;
range 192.168.1.41 192.168.1.61;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
option domain-name "ubuntu_01";
option domain-name-servers 168.95.1.1;
default-lease-time 259200;
max-lease-time 518400;}
ddn-update-style none;
---新增底下第2個Subnet 設定---------------------------------
subnet 192.168.2.0 netmask 255.255.255{
range 192.168.2.11 192.168.2.31;設定分配的範圍(可更改)
range 192.168.2.41 192.168.2.61;設定分配的範圍(可更改)
option routers 192.168.2.1;預設路由同eth2上address(重要)
option broadcast-address 192.168.2.255;廣撥位置
option domain-name "xp_01";在/etc/resolv.conf 給一個搜尋領域
option domain-name-servers 168.95.1.1; dns設定會變更user的resolv.conf
default-lease-time 259200; 以秒計費(3天)
max-lease-time 518400;以秒計費(6天)
}
3.設定防火牆iptables 偽裝設定
這是原來的設定iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
我們必須在新增一個rule讓192.168.2.1 也可以透過ppp0介面偽裝ip與外面的internet 聯繫iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ppp0 -j MASQUERADE
4.在來我們要設定dhcp 所要監聽的介面,目前為兩張eth1與eth2vim /etc/default/dhcp3-server
INTERFACES="eth1 eth2" <--很重要是用space區格不是,
設定完記得/etc/init.d/dhcp3-server restart 才有效
另外如果說你臨時將其中eth1刪掉 那麼第一時間eth連接的主機
還可以上一下網但是過一會就完全無法連線成功
所以記住,要設定監聽設定 ^_^
設定好摟!請下以下指令來觀看是否成功iptables -t nat -L -nv
設定到這邊,大概就ok了
接下來這邊之前沒講到,就是如何讓開機自動載入我們的iptables設定
因為iptables 在設定只是儲存在暫存區 故我們能夠透過過iptables-save > iptables.bak <--- 後面為檔名隨便取
之後在vim /etc/rc.local
#新增此行 讓一開機就載入iptables設定
iptables-restore < iptables.bak
設定完在nat主機這邊能透過arp -n來觀看所有dhcp主機狀態
而xp client端可以用arp -a來看,應該會看到你的dhcp主機ip
網路除錯步驟:
如果第ping 168.95.1.1無回應時,有可能
1.iptables 設定rule 檔住了
2.dns沒設
3.網路線沒插好
4./etc/network/interfaces 裡的設定有問題
5./etc/dhcp3/dhcpd.conf
6./etc/default/dhcp3-server 沒設監聽介面
以上是針對dhcp底下網路不通所述,當然有部份也可能是常遇到
2007年11月19日 星期一
| [+/-] |
[Ubuntu]如何架設Dhcp 伺服器(含NAT)兩張網卡 |
建議在架設Dhcp前先將前一篇文章如何架設簡易NAT 伺服器[入門篇]給設定好唷!
在這就不多續NAT設定,因為直接繼承nat設定就可以
硬體環境部份可參考nat設定入門那篇是一樣的
簡單介紹網卡
(eth0)外部網路(public ip)
(eth1)內部網路(Private IP)
#設定前請注意以下幾點 (主機=要設定那一台dhcp電腦)
1.主機端設定檔為/etc/dhcp3/dhcpd.conf
2./etc/dhcp3/dhcpd.conf 內的option routers就是指eth1裡的ip位址
3.如果你主機有兩張以上網卡,可以盡量將設定,設定在區域變數裡,如下subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168...略
}
這樣才能夠區分設定,也為以後擴充網卡及網域設定
4.記的設定/etc/default/dhcp3-server裡interfaces=內部介面
(預設是沒有設定,在只有兩張網卡是ok的他會自動偵測,但想想
如果你有三裝網卡分別是eth0(外),eth1(內)192.168.1.0/24
eth2(內)192.168.2.0/24 但是dhcp這樣會監聽所有介面
所以要設定為dhcp使用的介面)
5.此篇文章設針對ubuntu設定,故如果您是使用其他distribution
路逕會稍有不同
接下來到安裝的部份
1.安裝套件sudo apt-get install dhcp3-server
安裝好會自動啟動,嘿嘿但是一定會失敗因為沒設定
2.設定DHCP Server介面sudo vim /etc/default/dhcp3-server
將INTERFACES=""改為INTERFACES="eth1"
3..開始設定(/etc/dhcp3/dhcpd.conf)設定結尾一定要加;sudo vim /etc/dhcp3/dhcpd.conf
# 整體環境設定
ddn-update-style none; (不要更新 DDNS 的設定)
#筆者這邊將設定整體與區域設定分開,不刻意讓所有區域設定套用整體設定
subnet 192.168.1.0 netmask 255.255.255{
range 192.168.1.11 192.168.1.31;設定分配的範圍
range 192.168.1.41 192.168.1.61;設定分配的範圍
option routers 192.168.1.1;預設路由同eth1上address(重要)
option broadcast-address 192.168.1.255;廣撥位置
option domain-name "ubuntu_01";在/etc/resolv.conf 給一個搜尋領域
option domain-name-servers 168.95.1.1; dns設定會變更user的resolv.conf
default-lease-time 259200; 以秒計費(3天)
max-lease-time 518400;以秒計費(6天)
}
設定好之後,請重新啟動/etc/init.d/dhcp3-server restart
4.在來是客戶端設定(client setup)
Linux 客群:
很簡單,只要兩行就攪定,其他就交給dhcp server了^^sudo vim /etc/network/interfaces
auto eth0
iface eth0 inet dhcp
設定好可以看一下less /etc/resolv.conf
裡面會有我們在/etc/dhcp3/dhcpd.conf設定的資訊route -n 看一下預設確定一下有抓到嗎?
如果都抓到就ok了!
用netstat -tlunp來查看DHcp的狀況
Windows 客戶端:
『開始』-->『設定』-->『控制台』-->『網路和網際網路連線』-->『網路連線』-->『區域連線』
在(TCP/IP)地方勾選:
勾選『自動取得 IP 位址』及自動取的DNS 這樣就可以了
沒有圖片拍謝 !!








