一臺linux主機幹這麼多活:iptables+DHCP+squid+samba
最近公司擴建了一個新的辦公區,規模也就100人左右。
領導有幾個要求:
1:不允許坐席上網,但是允許坐席上幾個固定的網站(比如行政區劃網)。
2:允許辦公室的後勤人員上網。
3:允許坐席撥***連線總部騰訊通。
公司拉的10M光纖,從光電裝置出來後沒有路由器。
我做了兩個方案:
1:利用squid做個透明代理,然後做個DHCP分配IP地址給坐席。
squid負責控制埠跟網站
2:利用linux自帶的iptables作為防火牆,控制埠,所有坐席的IP的包直接DROP。
利用squid給坐席代理,簡單的那種,用IE上網。後勤部門則有iptables直接開放。
利用iptables開放***埠給所有IP地址,這樣,公司裡的任意一臺電腦都能撥***了。
後來想了想,還是第二種方案比較好。
於是就做了第二個方案:
由於公司的裝置有限,只能拿有限的資源來幹最多的活(相信大多數公司都是這樣的)
找了個桌上型電腦,配置一般般,買了塊100M網路卡。
安裝linux,我用的是CentOS5.5 把etho第一塊網路卡配上內網的IP地址:10.2.0.1
子網掩碼:255.255.255.0 閘道器:10.2.0.1
第二塊網路卡:eth1:192.168.0.9(假設的外網IP地址)子網掩碼:255.255.255.0 閘道器:192.168.0.1(假設的閘道器,真是閘道器跟IP地址跟運營商要就OK了)DNS:電信的填電信的,網通的填網通的不做解釋了。
輸入route命令,檢視下路由資訊,檢視default gateway是多少,是不是外網的IP地址,如果是的話那就ok了,不是的話就設定成外網的閘道器,不然是出不去的。
正好你的機器就你內網的閘道器也就是10.2.0.1所以我感覺內網gateway可以忽略。
都設定好以後 用這臺機器分別ping 外網和內網網段,看看能不能ping通。都ping同了,在看看坐席上的電腦(隨便找個,設定個10.2.0.*鍛的IP,netmask 255.255.255.0, gateway 10.2.0.1)能不能ping通10.2.0.1——-都通了,就開始設定防火牆規則。
—-> 首先開啟核心轉發的功能:方法有好幾種
1:echo “echo 1 >/proc/sys/net/ipv4/ip_forward” >> /etc/rc.d/rc.local–後面這個是加入到開機啟動,因為重啟後ip_forward這個檔案自動會變成0,不是1
2:vi /etc/sysctl.conf 把net.ipv4.ip_forward =1 <–把0改成1
然後執行 sysctl.conf -p立即生效
——>清空防火牆規則
iptables -F
iptables -X
iptables -Z
iptables -X
iptables -Z
———>設定鏈的預設規則
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
———>一般防火牆都會開下面兩條規則
iptables -A INPUT -i lo -j ACCEPT —迴環埠開啟
iptables -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT—已連線和已配置的規則允許
iptables -A INPUT -i lo -j ACCEPT —迴環埠開啟
iptables -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT—已連線和已配置的規則允許
iptables -A POSTROUTING -s 10.2.0.0/255.255.0.0 -o eth1 -j SNAT –to-source 192.168.0.9
讓內網的使用者通過192.168.0.9出去。
這樣這臺電腦就相當於一個路由器了,而且有個強大的iptables防火牆。
我是用FORWARD鏈控制內網上網的,例如:辦公室電腦IP地址為10.2.0.3
那就新增規則:iptables -A FORWARD -s 10.2.0.3 -j ACCEPT這樣這臺電腦就可以上網了。
————>再裝上DHCP給坐席分配IP地址。
掛載光碟 mount /dev/cdrom /mnt
到mnt目錄下找到掛載的光碟,找到dhcp安裝包,直接用rpm安裝就ok了。
初級的dhcp的配置很簡單,只要分配個IP地址,DNS就可以了。
—————->安裝代理軟體squid,也是找光碟的rpm包,我裝的是64為的,把那兩個64位的包裝上就ok了。
這裡說一下,為什麼要用squid而不是直接用防火牆開啟某個網站的訪問許可權?
原因是這樣的:
假如:我用防火牆開放了EMS的官方網站,我只需要在iptables上配上一條規則就可以訪問了
iptables -A FORWARD -s 10.2.0.0/16 -d 0.0.0.0 (pingEMS得到的IP地址) -j ACCEPT
就可以了,坐席訪問EMS一點問題也沒有。但是有的網站掛的廣告,你的IP地址可能就沒有包括連線廣告的IP,這樣網頁開啟速度會非常滿,舉個例子:www.xzqh.org,這個網站就是,掛了N多谷歌廣告。
————->安裝完後在/etc/squid/squid.conf裡配置相關資訊。
比如設定記憶體大小,快取大小,快取位置,acl訪問規則控制
http_port 3128 //設定監聽的IP與埠號
cache_mem 64 MB //設定記憶體緩衝的大小
cache_dir ufs /var/spool/squid 2000 16 256 //設定硬碟緩衝大小
cache_mem 64 MB //設定記憶體緩衝的大小
cache_dir ufs /var/spool/squid 2000 16 256 //設定硬碟緩衝大小
dns_nameservers 192.168.0.254? //設定DNS伺服器地址,一般可以不設定,預設使用伺服器自己設定的dns
cache_access_log /var/log/squid/access.log //設定訪問日誌檔案
cache_log /var/log/squid/cache.log //設定快取日誌檔案
cache_store_log /var/log/squid/store.log //設定儲存快取物件的狀態記錄檔案
visible_hostname squid //設定squid主機名稱
cache_mgr it@test.com //設定管理員郵箱
acl all src0.0.0 .0/0.0.0.0 //設定訪問控制列表
cache_access_log /var/log/squid/access.log //設定訪問日誌檔案
cache_log /var/log/squid/cache.log //設定快取日誌檔案
cache_store_log /var/log/squid/store.log //設定儲存快取物件的狀態記錄檔案
visible_hostname squid //設定squid主機名稱
cache_mgr it@test.com //設定管理員郵箱
acl all src
比如要讓坐席訪問EMS網站就這樣寫
acl EMS(–自己起名字)dstdomain .ems.com.cn–注意EMS前有個點
http_access allow EMS(對應上面起的名字)
重啟squid就可以訪問EMS網站了,當然要在IE或者其他瀏覽器上設定代理才行
http_access allow all //設定訪問許可權
http_access allow all //設定訪問許可權
這樣,squid一般代理就做好了,如果你需要使用透明代理,那就另找資料看看。
他們需要個共享伺服器,直接在這上面配了個簡單的samba~唉
累死我了。
終於折騰完了。
其實檔案伺服器用windows的就非常不錯,可惜,我還是相信linux的穩定性。
這樣我就少網這邊跑兩趟,倒是剩了不少事。
文中若有不對的地方,歡迎指出!