一臺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 -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 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 //
設定硬碟緩衝大小
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 src 0.0.0.0/0.0.0.0 //
設定訪問控制列表
比如要讓坐席訪問EMS網站就這樣寫
acl EMS(–自己起名字)dstdomain .ems.com.cn–注意EMS前有個點
http_access allow EMS(對應上面起的名字)
重啟squid就可以訪問EMS網站了,當然要在IE或者其他瀏覽器上設定代理才行
http_access allow all //
設定訪問許可權
這樣,squid一般代理就做好了,如果你需要使用透明代理,那就另找資料看看。
 
 
他們需要個共享伺服器,直接在這上面配了個簡單的samba~唉
累死我了。
終於折騰完了。
其實檔案伺服器用windows的就非常不錯,可惜,我還是相信linux的穩定性。
這樣我就少網這邊跑兩趟,倒是剩了不少事。
 
 
 
文中若有不對的地方,歡迎指出!