問題:如何通過伺服器上外網
伺服器上外網執行操作(操作順序可調):
(1)iNode串連
(2)執行StartMyNetwork.sh 終端運行命令後會自動關閉
問題:有哪些自己寫的指令檔,存在什麼路徑下,主要做了哪些操作
伺服器網路設定指令碼存放位置:
/bin/MyFireWall.sh /bin/StartMyNetwork.sh /etc/rc.local (開機修改MAC) /etc/network/interfaces配置eth0 、eth1 dhcp配置見第3點
或者到/home/administrator/MyNetwork修改ln /bin/StartMyNetwork.sh /home/administrator/MyNetwork
ln /bin/MyFireWall.sh /home/administrtor/MyNetwork
ln /bin/StartMyNetwork.sh /home/administrator/案頭
問題:如何綁定新的MAC
添加MAC: sudo MyFireWall.sh 00:00:00:00:00:00 Tomy’sMAC
註:描述Tomy'sMAC中間無空格的字串,也可不寫,MAC位元不對會出錯
或在案頭上addmac.txt檔案中添加
添加MAC後重啟iptables:sudo StartMyNetwork.sh
或執行案頭上StartMyNetwork.sh指令碼
問題:如何重啟iptables
sudo StartMyNetwork.sh
或執行案頭上的StartMyNetwork.sh指令碼
1、iNode認證用戶端安裝
首先在/etc/rc.local 中添加
ifconfig eth0 down
ifconfig eth0 hw ether ******
ifconfig eth0 up
(1)學校網站下載linux版本。
(2)修改install.sh許可權(755),執行install.sh。
(3)修改iNodeClient許可權(755),運行iNodeClient認證。
2、MyFireWall.sh防火牆設定
#!/bin/bash
#written by *** 2012/3/29 QQ***
#1.主要作用:只有經過該指令碼綁定的MAC才可通過本機訪問外網,其餘MAC一律拒絕訪問外網。
#2.該指令碼的$1和$2為新添加的MAC和描述,且重新導向到addmac.txt中。
#開啟IP轉寄功能,相當於讓核心做路由
echo "1" > /proc/sys/net/ipv4/ip_forward
###清除iptables規則
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
###清除iptables規則
###設定預設規則
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP #只有FORWARD鏈預設DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
###設定預設規則
###啟動nat轉寄及FORWARD state允許轉寄外網對內網請求響應的包
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
###啟動nat轉寄及FORWARD state允許轉寄外網對內網請求響應的包
###本指令碼預設允許通過的MAC(其餘允許通過的MAC在~/案頭/addmac.txt中)
iptables -A FORWARD -m mac --mac-source *** -j ACCEPT
iptables -A FORWARD -m mac --mac-source *** -j ACCEPT
###本指令碼預設允許通過的MAC(其餘允許通過的MAC在~/案頭/addmac.txt中)
###重新導向指令碼的$1 $2
#eg:sudo MyFireWall.sh 00:00:00:00:00:00 ZhangSan
#意思是將00:00:00:00:00:00 ZhangSan作為一行添加到addmac.txt中
if [ $1 ];then
#if [ $2 ];then
#echo \# $2 >> /bin/MyFireWall.sh #反斜線\轉義注釋符號#
#else
# :
#fi
#echo iptables -A FORWARD -m mac --mac-source $1 -j ACCEPT >> /bin/MyFireWall.sh
echo $1 $2 >> /home/administrator/案頭/addmac.txt
else
:
fi
###重新導向指令碼的$1 $2
###從addmac.txt讀取使用者添加的MAC,並允許其訪問外網
#管道| 即讀取cat 顯示的檔案的每一行,並將以行存在LINE變數中。
#read有讀取一行的作用。
cat /home/administrator/案頭/addmac.txt | while read LINE
do
usermac=`echo $LINE | awk '{print $1}'`
#username=`echo $LINE | awk '{print $2}'`
#echo \# $username >> /bin/MyFireWall.sh
#if else 語句的作用是避免將讀到的空行作為MAC賦給iptables語句。
if [ $usermac ];then
iptables -A FORWARD -m mac --mac-source $usermac -j ACCEPT
else
:
fi
done
###從addmac.txt讀取使用者添加的MAC,並允許其訪問外網
3、DHCP伺服器
(1)
安裝dhcp3-server:apt-get install dhcp3-server
(2)
a、gedit /etc/default/dhcp3-server
INTERFACES="eth1"
b、gedit /etc/dhcp3/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
option domain-name-servers 218.30.19.40,202.117.112.3;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 86400;
max-lease-time 172800;
}
host WorkStation{
hardware ethernet 2c:41:38:94:51:90;
fixed-address 192.168.0.30;
}
註:主機名稱任意,若用戶端手動設定,以用戶端配置為準。
(3)
/etc/init.d/dhcp3-server start
4、StartMyNetwork.s放在案頭上由使用者執行的操作
執行需要輸入密碼
sudo /sbin/ifconfig eth0 hw ether **:**:**:**:**:**
sudo /home/administrator/MyNetwork/MyFireWall.sh
sudo /sbin/dhclient eth0
5、/etc/network/interfaces配置eth0 、eth1
auto eth0
iface eth0 inet dhcp
pre-up ifconfig eth0 hw ether **:**:**:**:**:** #修改網卡為外網認證網卡
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
6、/etc/rc.local設定開機啟動項
開機修改網卡為外網認證網卡,開機啟動iNode服務
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether **:**:**:**:**:**
/sbin/ifconfig eth0 up
/etc/init.d/iNodeAuthService start
exit 0
6、修改ubuntu10.10和windows XP雙系統啟動順序
在windows xp作業系統下右擊--我的電腦--屬性--進階--啟動和故障恢複--設定--預設作業系統下拉框選擇預設啟動作業系統和類表顯示時間等。
7、伺服器啟用ssh
伺服器安裝openssh-server:sudo apt-get install openssh-server
8、卸載NetworkManager
9、伺服器定時關機
gedit /etc/crontab
30 23 * * * root /sbin/shutdown -h now
每天23:30關機。
10、指令碼StartMyNetwork.sh MyFireWall.sh作為命令執行
將StartMyNetwork.sh MyFireWall.sh拷貝到PATH標明的路徑下(/bin)。
如:將這兩個指令碼拷貝到/bin檔案夾下,則在終端的任意路徑下都可執行這兩個指令碼。
補充:
PATH含義:在目前的目錄下找不到命令或指令碼,則到PATH標明的路徑下尋找。
PATH環境變數查看:echo $PATH 或 export (查看所有環境變數)
PATH修改:export PATH=**:**:**
11、Xmanager切換中英文IME(需要先在喜好設定--鍵盤IME啟用):shift
在喜好設定--鍵盤IME裡設定
12、查看DHCP的IP曆史分配情況
cat /var/lib/dhcp3/dhcpd.leases
註:無法查看固定分配的IP(用戶端指定和服務端指定都無法查看)
或推薦用管道查看日誌
cat /var/log/messages | grep DHCPACK
註:/var/log/messages存放的是一天的messages
/var/log/messages.1存放的是?多長時間
13、查看正在使用的IP,即查看當前有哪些用戶端串連到伺服器
(1)arp #所有介面
(2)arp –i eth1 #查看連到eth1介面的IP及對應MAC
註:如果/etc/dhcp3/dhcpd.conf中給特定MAC分配指定的IP,則ARP可以解析 該IP與對應MAC。(用戶端指定可解析出)用ARP命令時是解析的當前在活動的包,所以有時用戶端雖然連伺服器,但解析不出用戶端。
14、/var/lib/dhcp3/dhcpd.leases欄位含義
{starts 6 2010/12/25 21:20:08; ends 6 2010/12/25 23:20:08; cltt 6 2010/12/25 21:20:08; binding state active; next binding state free;} {starts 0 2010/12/19 15:56:00; ends 0 2010/12/19 17:56:00; tstp 0 2010/12/19 17:56:00; cltt 0 2010/12/19 15:56:00; binding state free;}
start和end時間使用starts和ends語句記錄。Tstp語句指定在使用失敗恢複協議時,伴侶認為租約到期的時間,tsfp語句也用在失敗恢複協議使用時,指定伴侶確認的租約到期時間。 binding state語句聲明租約的綁定狀態,當DHCP伺服器沒有配置使用失敗恢複協議時,租約的綁定狀態會是啟用(active)和自由(free),失敗恢複協議添加了一些新的傳送狀態 cltt 我找了下dhcp的英文介紹 這麼解釋的The time of the last transaction with the client on this lease. 大概就是用戶端最後一次續約時。
FAQ
問題一:iNode一直認證失敗(connect failed)
解決:使用者權限問題?(將administrator UID設為0後會出現failed問題)
將UID改回1000,或者是該iNode的執行許可權原因,改變其執行許可權,或改變所有者,所屬組?斷開再連。或者重啟iNode再連。
問題二:iNode連線逾時(overtime)。
解決:斷開再連。(或者重啟再連。)
問題三:iNode串連時顯示MAC不對。
解決:ifconfig eth0 hw ether **:**:**:**:**:** (改為可連外網MAC)
問題四:iNode顯示認證通過,但是無法ping通 www.baidu.com
解決:dhclient eth0 (未擷取IP)
問題五:DHCP伺服器不可用
解決:內網網卡eth1的IP配置為192.168.0.1
問題六:使用NetworkManager後eth0的MAC改變
解決:ifconfig eth0 hw ether **:**:**:**:**:** (改為可連外網MAC)
或者直接執行MyFireWall.sh
DNS配置
1、DNS設定檔
/etc/hosts 這個是最早的 hostname 對應 IP 的檔案;
/etc/resolv.conf :這個重要!就是 ISP 的 DNS 伺服器 IP 記錄處;
/etc/nsswitch.conf:這個檔案則是在『決定』先要使用 /etc/hosts 還是
/etc/resolv.conf 的設定!
一般而言, Linux 的預設主機名稱與 IP 的對應搜尋都以 /etc/hosts 為優先,
2、DNS相關命令
root@ubuntu:~# dig +trace www.baidu.com
DNS 的正、反解查詢指令: host, nslookup, dig
root@ubuntu:~# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 119.75.218.77
www.a.shifen.com has address 119.75.217.56
Host www.a.shifen.com not found: 3(NXDOMAIN)
root@ubuntu:~#
root@ubuntu:~# nslookup www.baidu.com
Server: 192.168.77.2
Address: 192.168.77.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 119.75.218.77
Name: www.a.shifen.com
Address: 119.75.217.56
root@ubuntu:~#
3、配置執行個體
參考:http://www.xkedu.cn/blog/read.php?478
1. 配置環境:
一台server和若干client組成的簡單區域網路,在一個網段上。一台Server做為DNS server,注意DNS server Ip地址不能用DHCP,要用靜態ip。Server的ip:192.168.0.1,Client的ip範圍為:192.168.0.2——192.168.0.254,相互能ping通。
2. 檢查是否安裝bind
使用命令dpkg -l bind*查看相關軟體是否安裝
如果沒有安裝就進行下一步
3. Installing BIND9 (安裝 BIND9)
命令: sudo apt-get install bind9
我們將配置DNS為主伺服器類型
DNS 設定檔在/etc/bind 目錄中。安裝bind9後會產生如下三個設定檔:
named.conf;named.conf.options;named.conf.local。
其中 named.conf是主設定檔,裡麵包含了named.conf.options和named.conf.local,我們在架設本地dns時,只需改動named.conf.local即可。
設定執行個體
⑴環境:
Server的ip:192.168.0.1
Client的ip範圍為:192.168.0.2——192.168.0.254,相互能ping通
現在將主機架設成主dns伺服器,要求能解析
kxsrv.304.com 192.168.0.1
www.304.com 192.168.0.1
mail.304.com 192.168.0.30
⑵分析:根據上面的主機名稱和ip對應可以看出:
①需要添加正向地區“304.com”和反向地區“0.168.192.in-addr.arpa”,
②在“304.com”地區中添加A記錄kxsrv對應192.168.0.1, CNAME記錄www對應kxsrv
③在“0.168.192.in-addr.arpa”地區中添加各個ip地址對應的主機名稱
⑶編輯設定檔 記得路徑 /etc/bind/
①編輯named.conf.local
先要添加寫入權限:sudo chmod 646 named.conf.local
編輯用:sudo nano /etc/bind/named.conf.local
添加下列語句
//正向地區
zone "304.com" {
type master;
file "/etc/bind/db.304.com";
};
//反向地區
zone "0.168.192.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.30.140.192";
};
然後儲存
②建立named.conf.local中指定的地區檔案
在/etc/bind下建立正向地區檔案 (複製了一份)
命令:sudo cp /etc/bind/db.local /etc/bind/db.304.com
在/etc/bind下建立反向地區檔案 (複製了一份)
命令:sudo cp /etc/bind/db.127 /etc/bind/db.0.168.192
③編輯正向地區檔案
命令:sudo nano /etc/bind/db.304.com
將原文參照下文修改
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.304.com. root.304.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.304.com.
@ IN A 127.0.0.1
@ IN AAAA ::1
ns IN A 192.168.0.1
kxsrv IN A 192.168.0.1
mail IN A 192.168.0.30
www IN CNAME kxsrv
注意修改的地方,在原文的localhost處更改,再添加各個主機記錄 注意用Tab鍵分開對齊
另外使用別名時:www IN cname 192.168.0.1 會出錯,
要使用www IN cname kxsrv
④編輯反向地區檔案
命令:sudo nano /etc/bind/db.0.168.192
將原文參照下文修改
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.304.com. root.304.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
9 IN PTR ns.304.com.
9 IN PTR kxsrv.304.com.
9 IN PTR www.304.com.
9 IN PTR mail.304.com
注意修改的地方,在原文的localhost處更改,再添加各個主機記錄 注意用Tab鍵分開對齊
(4)重新啟動DNS服務
sudo /etc/init.d/bind9 restart
到此位置dns就配置完成了,你可以在XP下的cmd環境下用nslookup去試試看
注意:改動設定檔後都要重新啟動bind9。
(5)
Linux 修改DNS,請修改/etc/resolv.conf檔案。
例如:
編輯sudo nano /etc/resolv.conf
更改為
nameserver 192.168.0.1
nameserver 202.117.112.3
DNS用戶端的配置
此時DNS伺服器已經開始工作了,要使用該DNS伺服器,以XP為例,到"控制台"–"網路連接",找到上網的網卡,右鍵選擇"屬性",改變DNS地址為192.168.0.1
驗證:在用戶端
ping kxsrv.304.com
ping www.304.com
ping mail.304.com
總結:/etc/bind下檔案之間的關係,
1、主要有三個設定檔:named.conf;named.conf.options;named.conf.local。(還有named.conf.default-zones等預設檔案,不用管它)
2、其中named.conf是主設定檔,裡麵包含named.conf.options和named.conf.local,我們在架設本地dns時,只需改動named.conf.local即可。
3、先在named.conf.local中配置正向和反向地區,
正向地區的具體配置在/etc/bind/db.304.com檔案中;(以本次實驗為例)
正向地區的具體配置在/etc/bind/db.0.168.192檔案中;(以本次實驗為例)
然後到正向和反向的具體設定檔中配置。
再總結:只需改動在named.conf.local添加正向和反向地區;再到正向設定檔(在named.conf.local中指明了該檔案的路徑和名稱)和反向設定檔(在named.conf.local中指明了該檔案的路徑和名稱)中配置。
即以後要該網域名稱直接替換上述三個檔案的304字串為要修改後的字串即可。
要添加其他需要解析的網域名稱(仍是304.com域,仍在192.168.0段內,非192.168.0.1地址),如添加ftp.304.com對應地址192.168.0.20,只需在/etc/bind/db.304.com和/etc/bind/db.0.168.192中添加相應網域名稱和地址即可.