使用debian配置網關服務器(自己)

首先要求電腦有兩塊網卡,一個連接到外網,一個連接到switch,而switch與內網其他電腦相連。

安裝linux操作系統,這裏選擇了debian stable版本(目前是sarge版)只需要安裝基本部分,不需要安裝x(比如xorg)和wm(比如fvwm)以及desktop environment(比如gnome,kde)

選擇eth0作爲主網卡(若eth0不能連接,則對調兩個網線,或着把eth1作爲對外網卡)

修改ip,不用

iface eth0 inet dhcp

並增加eth1的設置

vi /etc/network/interfaces

比如我這裏是

auto eth0
iface eth0 inet static
        address 202.38.68.148
        netmask 255.255.255.128
        network 202.38.68.0
        broadcast 202.38.68.255
        gateway 202.38.68.254
        dns-nameservers 202.38.64.1
auto eth1
iface eth1 inet static
        address 192.168.2.1
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255

aptitude安裝resolvconf使得dns-nameservers有效。

aptitude安裝emacs,vim做編輯器,安裝lftp做ftp客戶工具,安裝ssh來遠程管理。

重啓網絡

/etc/init.d/network restart

配置iptables,在shell下執行

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth3 -j SNAT --to-source  202.38.68.148

現在內網(設置好192.168.2.*等)就能夠上網了(ipv4)。當然這樣做比較麻煩,請看下面的dhcp自動分配ip服務的設置。

配置dhcp服務

如果子網內電腦很多,一個一個手動分配ip就給管理員帶來很大的麻煩的,dhcp服務可以給內網的電腦自動分配ip,可以大大減輕管理員的工作。

aptitude安裝dhcp這裏的dhcp是版本2,當然也可以選擇版本3,版本3叫做dhcp3-server不過dhcp3軟件包使用/etc/dhcp3/dhcpd.conf作爲其配置文件,而不像dhcp2使用/etc/dhcpd.conf

寫配置文件/etc/dhcpd.conf

subnet 192.168.2.0 netmask 255.255.255.0 {
  option routers 192.168.2.1;
  option subnet-mask 255.255.255.0;

  option domain-name "domain.org";
  option domain-name-servers 202.38.64.1;
  option broadcast-address 192.168.2.255;

  option time-offset -18000;
  range 192.168.2.11 192.168.2.250;
  default-lease-time 216000;
  max-lease-time 432000;
}

設置提供dhcp的網卡修改/etc/default/dhcp

INTERFACES="eth1"

重新啓動dhcp服務

/etc/init.d/dhcp restart



我自己的配置如下:

首先要內核支持iptables

配置內核可以參考網址:

http://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html#KERNELSETUP

內核配置

爲了運行iptables,需要在內核配置期間,選擇以下一些選項,不管你用make config或其他命令。

CONFIG_PACKET - 允許程序直接訪問網絡設備(譯者注:最常用的就是網卡了),象tcpdump 和 snort就要使用這個功能。

Note

嚴格地說,iptables並不需要CONFIG_PACKET,但是它有很多用處(譯者注:其他程序需要),所以就選上了。當然,你不想要,不選就是了。(譯者注:建議還是選的爲好)

CONFIG_NETFILTER - 允許計算機作爲網關或防火牆。這個是必需的,因爲整篇文章都要用到這個功能。我想你也需要這個,誰叫你學iptables呢:)

當然,你要給網絡設備安裝正確的驅動程序,比如,Ethernet 網卡, PPP 還有 SLIP 。 上面的選項,只是在內核中建立了一個框架,iptables確實已經可以運行,但不能做任何實質性的工作。我們需要更多的選項。以下給出內核2.4.9的選項和簡單的說明:

CONFIG_IP_NF_CONNTRACK - 連接跟蹤模塊,用於 NAT(網絡地址轉換)Masquerading(ip地址僞裝),當然,還有其他應用。如果你想把LAN中的一臺機子作爲防火牆,這個模塊你算選對了。腳本rc.firewall.txt 要想正常工作,就必需有它的存在。

CONFIG_IP_NF_FTP - 這個選項提供針對FTP連接進行連接跟蹤的功能。一般情況下,對FTP連接進行連接跟蹤是很困難的,要做到這一點,需要一個名爲helper的動態鏈接庫。此選項就是用來編譯helper的。如果沒有這個功能,就無法穿越防火牆或網關使用FTP。

CONFIG_IP_NF_IPTABLES - 有了它,你才能使用過濾、僞裝、NAT。它爲內核加入了iptables標識框架。沒有它,iptables毫無作用。

CONFIG_IP_NF_MATCH_LIMIT - 此模塊並不是十分必要,但我在例子rc.firewall.txt中用到了。它提供匹配LIMIT的功能,以便於使用一個適當的規則來控制每分鐘要匹配的數據包的數量。比如,-m limit --limit 3/minute 的作用是每分鐘最多匹配三個數據包。這個功能也可用來消除某種DoS攻擊。

CONFIG_IP_NF_MATCH_MAC - 選擇這個模塊,可以根據MAC地址匹配數據包。例如,我們想要阻塞使用了某些MAC地址的數據包,或阻塞某些計算機的通信,用這個很容易。因爲每個Ethernet網卡都有它自己的MAC地址,且幾乎從不會改變。但我在rc.firewall.txt中沒有用到這個功能,其他例子也未用到。(譯者注:這又一次說明了學習是爲將來打基礎:) )

CONFIG_IP_NF_MATCH_MARK - 這個選項用來標記數據包。對數據包做MARK(標記)操作,我們就可以在後面的表中用這個標記來匹配數據包。後文有詳細的說明。

CONFIG_IP_NF_MATCH_MULTIPORT - 選擇這個模塊我們可以使用端口範圍來匹配數據包,沒有它,是無法做到這一點的。

CONFIG_IP_NF_MATCH_TOS - 使我們可以設置數據包的TOS(Type Of Service 服務類型)。這個工作也可以用命令ip/tc完成,還可在mangle表中用某種規則設定。

CONFIG_IP_NF_MATCH_TCPMSS - 可以基於MSS匹配TCP數據包。

CONFIG_IP_NF_MATCH_STATE - 相比較ipchains這是最大的更新,有了它,我們可以對數據包做狀態匹配。比如,在某個TCP連接的兩個方向上已有通信,則這個連接上的數據包就被看作ESTABLISHED(已建立連接)狀態。在rc.firewall.txt 裏大量使用了此模塊的功能。

CONFIG_IP_NF_MATCH_UNCLEAN - 匹配那些不符合類型標準或無效的P、TCP、UDP、ICMP數據包(譯者注:之所以此模塊名爲UNCLEAN,可以這樣理解,凡不是正確模式的包都是髒的。這有些象操作系統內存管理中的“髒頁”,那這裏就可以稱作“髒包”了,自然也就UNCLEAN了)。我們一般丟棄這樣的包,但不知這樣做是否正確。另外要注意,這種匹配功能還在實驗階段,可能會有些問題。

CONFIG_IP_NF_MATCH_OWNER - 根據套接字的擁有者匹配數據包。比如,我們只允許root訪問Internet。在iptables中,這個模塊最初只是用一個例子來說明它的功能。同樣,這個模塊也處於實驗階段,還無法使用。

CONFIG_IP_NF_FILTER - 這個模塊爲iptables添加基本的過濾表,其中包含INPUT、FORWARD、OUTPUT鏈。通過過濾表可以做完全的IP過濾。只要想過濾數據包,不管是接收的還是發送的,也不管做何種過濾,都必需此模塊。

CONFIG_IP_NF_TARGET_REJECT - 這個操作使我們用ICMP錯誤信息來回應接收到的數據包,而不是簡單地丟棄它。有些情況必須要有迴應的,比如,相對於ICMP和UDP來說,要重置或拒絕TCP連接總是需要一個TCP RST包。

CONFIG_IP_NF_TARGET_MIRROR - 這個操作使數據包返回到發送它的計算機。例如,我們在INPUT鏈裏對目的端口爲HTTP的包設置了MIRROR操作,當有人訪問HTTP時,包就被髮送回原計算機,最後,他訪問的可能是他自己的主頁。(譯者注:應該不難理解爲什麼叫做MIRROR了)

CONFIG_IP_NF_NAT - 顧名思義,本模塊提供NAT功能。這個選項使我們有權訪問nat表。端口轉發和僞裝是必需此模塊的。當然,如果你的LAN裏的所有計算機都有唯一的有效的IP地址,那在做防火牆或僞裝時就無須這個選項了。rc.firewall.txt 是需要的:)

CONFIG_IP_NF_TARGET_MASQUERADE - 提供MASQUERADE(僞裝)操作。如果我們不知道連接Internet的IP,首選的方法就是使用MASQUERADE,而不是DNAT或SNAT。換句話說,就是如果我們使用PPP或SLIP等連入Internet,由DHCP或其他服務分配IP,使用這個比SNAT好。因爲MASQUERADE不需要預先知道連接Internet的IP,雖然對於計算機來說MASQUERADE要比NAT的負載稍微高一點。

CONFIG_IP_NF_TARGET_REDIRECT - 這個操作和代理程序一起使用是很有用的。它不會讓數據包直接通過,而是把包重新映射到本地主機,也就是完成透明代理。

CONFIG_IP_NF_TARGET_LOG - 爲iptables增加LOG(日誌)操作。通過它,可以使用系統日誌服務記錄某些數據包,這樣我們就能瞭解在包上發生了什麼。這對於我們做安全審查、調試腳本的幫助是無價的。

CONFIG_IP_NF_TARGET_TCPMSS - 這個選項可以對付一些阻塞ICMP分段信息的ISP(服務提供商)或服務。沒有ICMP分段信息,一些網頁、大郵件無法通過,雖然小郵件可以,還有,在握手完成之後,ssh可以但scp不能工作。我們可以用TCPMSS解決這個問題,就是使MSS(Maximum Segment Size)被鉗制於PMTU(Path Maximum Transmit Unit)。這個方法可以處理被Netfilter開發者們在內核配置幫助中稱作“criminally brain-dead ISPs or servers”的問題。

CONFIG_IP_NF_COMPAT_IPCHAINS - ipchains的,這只是爲內核從2.2轉換到2.4而使用的,它會在2.6中刪除。

CONFIG_IP_NF_COMPAT_IPFWADM - 同上,這只是ipfwadm的暫時使用的兼容模式。

上面,我簡要介紹了很多選項,但這只是內核2.4.9中的。要想看看更多的選項,建議你去Netfilter看看patch-o-matic。在那裏,有其他的一些選項。POM可能會被加到內核裏,當然現在還沒有。這有很多原因,比如,還不穩定,Linus Torvalds沒打算或沒堅持要把這些補丁放入主流的內核,因爲它們還在實驗。

把以下選項編譯進內核或編譯成模塊,rc.firewall.txt才能使用。

  • CONFIG_PACKET

  • CONFIG_NETFILTER

  • CONFIG_IP_NF_CONNTRACK

  • CONFIG_IP_NF_FTP

  • CONFIG_IP_NF_IRC

  • CONFIG_IP_NF_IPTABLES

  • CONFIG_IP_NF_FILTER

  • CONFIG_IP_NF_NAT

  • CONFIG_IP_NF_MATCH_STATE

  • CONFIG_IP_NF_TARGET_LOG

  • CONFIG_IP_NF_MATCH_LIMIT

  • CONFIG_IP_NF_TARGET_MASQUERADE

以上是爲保證 rc.firewall.txt正常工作而需要的最少的選項。其他腳本需要的選項,在相應的章節裏都有說明。目前,我們只需注意要學習的這個腳本。


內核配置並編譯好之後,剩下的就是修改兩個配置文件了。

vim /etc/network/interfaces


# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# Generated by rays-installer.

# The loopback interface
auto lo
iface lo inet loopback

auto eth3
iface eth3 inet static
    address 202.201.13.65
    netmask 255.255.255.0
    network 202.201.13.0
    broadcast 202.201.13.255
    gateway 202.201.13.1
    dns-nameservers 202.201.0.131
#auto eth3
#iface eth3 inet static
#   address 192.168.2.247
#   netmask 255.255.255.0
#   network 192.168.2.0
#   broadcast 192.168.2.255
#   gateway 192.168.2.1
#   dns-nameservers 202.201.0.131

#auto eth2
#iface eth2 inet static
#   address 192.168.3.1
#   netmask 255.255.255.0
#   network 192.168.3.0
#   broadcast 192.168.3.255

auto eth2
iface eth2 inet static
    address 10.0.0.1
    netmask 255.0.0.0
    network 10.0.0.0
    broadcast 10.255.255.255


安裝dhcp,即dhcp的版本爲2。(可以參考前面的)


vim /etc/dhcpd.conf

subnet 10.0.0.0 netmask 255.0.0.0 {
    option routers 10.0.0.1;
    option subnet-mask 255.0.0.0;


    option domain-name "dslab lzu.edu.cn";
    option domain-name-servers 202.201.0.131, 202.201.0.132;
    option broadcast-address 10.255.255.255;

    option time-offset -18000;
    range 10.0.0.11 10.0.0.250;
    default-lease-time 216000;
    max-lease-time 432000;
}

最後執行

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth3 -j SNAT --to-source 202.201.13.65

上面這條命令配置的NAT屬於Port Restricted cone Nat型

關於iptables可以參考網址:

http://tldp.org/HOWTO/IP-Masquerade-HOWTO/firewall-examples.html

至此,配置完畢,可以使用了!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章