在開始這個章節之前,您務必要讀過『簡易防火牆』那一章節,否則這篇文章裡面很多的資料將會無法理解喔!好了,那麼 NAT 是什麼?是 Network Address Translation 的縮寫,這玩意很有趣,因為他可以讓您的 Linux 提供至少最簡單的 IP 分享器的功能!讓一部 Linux 主機可以提供整個區域網路(LAN)內的電腦來分享網路頻寬,也就是區域內部的電腦通通都可以透過 NAT 主機來達到多人上網的目的吶!這篇文章其實主要是簡易防火牆的延伸就是了! |
1. 使用 ntsysv
設定開機時啟動的服務項目:
[root@test root]# ntsysv 只要選擇底下幾個服務即可: atd, cron, iptables, keytables, network, random, syslog, xinetd 2. 重新開機讓設定生效:
3. 觀察目前的
port 開啟多少個?
|
[root@test
root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 IPADDR=192.168.1.2 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes <==重要的地方在這裡!請設定為 yes 呦! # 如果您不曉得應該如何設定的話,就照上面的打就好了! |
[root@test
root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=dhcp <==這裡最重要! BROADCAST=192.168.100.255 IPADDR=192.168.100.1 NETMASK=255.255.255.0 NETWORK=192.168.100.0 ONBOOT=yes # 如果您不曉得應該如何設定的話,就照上面的打就好了! |
[root@test
root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0 BOOTPROTO=static BROADCAST=192.168.1.255 IPADDR=192.168.1.2 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes # 如果您不曉得應該如何設定的話,就照上面的打就好了! |
[root@test
root]# ifdown eth0
[root@test root]# ifup eth0 [root@test root]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface swks81-1.adsl.s * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default swks81-1.adsl.s 0.0.0.0 UG 0 0 0 ppp0 # 嘿嘿!這樣就是成功啦!注意,上面這個路由是以 adsl 撥接為例的! |
1. 將私有 IP
加入到 /etc/hosts 裡面去吧!
[root@test root]# vi /etc/hosts 127.0.0.1 localhost 192.168.1.1 linux001 192.168.1.2 linux002 .......(略)...... 192.168.1.100 linux100 .......(略)...... 192.168.1.254 linux254 2. 將 DNS 的
IP 寫到 /etc/resolv.conf 裡面去,這裡以中華電信跟 Seednet 為例
3. 設定主機名稱跟
gateway 與否:
|
echo "1" >
/proc/sys/net/ipv4/ip_forward
modprobe ip_tables modprobe ip_nat_ftp modprobe ip_nat_irc modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_conntrack_irc /sbin/iptables -F /sbin/iptables -X /sbin/iptables -Z /sbin/iptables -F -t nat /sbin/iptables -X -t nat /sbin/iptables -Z -t nat /sbin/iptables -P INPUT DROP /sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -t nat -P PREROUTING ACCEPT /sbin/iptables -t nat -P POSTROUTING ACCEPT /sbin/iptables -t nat -P OUTPUT ACCEPT /sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE |
[root@test
root]# cd /usr/local/virus/iptables
[root@test iptables]# vi iptables.rule #!/bin/bash #...(略)... # 設定對外的網路介面 EXTIF="ppp0" # 設定對內的網路介面與內部私有網域的設定 INIF="eth0" INNET="192.168.1.0/24" # This is for NAT's network #....(略).... if [ "$INIF" != "" ]; then /sbin/iptables -A INPUT -i $INIF -j ACCEPT echo "1" > /proc/sys/net/ipv4/ip_forward /sbin/iptables -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE fi #...(略)... |
[root@test
root]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1 BOOTPROTO=static BROADCAST=192.168.0.255 IPADDR=192.168.0.2 NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=no <==這裡很重要!對外用來撥接的卡不要在開機的時候啟動啦! |
在 Client 端的設定真是簡單的可以了!由於我們上面的網域設定的是 192.168.1.0/24 這個 C Class 的私有網域,所以您只要記得幾件事情:
大致上就是這樣啦!至於 Client 端通常是 Windows ,相關的設定可以前往參考一下區域網路設定一文說!至於 Linux 端則需要查看一下 連上 Internet 裡面的固定 IP 的設定啦!
- network 設定需要為: 192.168.1.0
- broadcast 設定需要為: 192.168.1.255
- netmask 設定需要為 255.255.255.0
- IP 設定需要為 192.168.1.1 ~ 192.168.1.254 之一,且『不能重複』
- Gateway 或者說是 通訊閘 需要設定為您的 Linux 的對內 IP ,以我的例子來說,就是 192.168.1.2 !
- DNS 的設定:這個最容易出錯了,您的 DNS 設定需要是您的 ISP 給您的 DNS IP,如果您不知道的話,可以填入 168.95.1.1 這一個中華電信的 DNS 或者是 139.175.10.20 這一個 SeedNet 的 DNS 即可!千萬不要設定為 192.168.1.2 呦!會連不出去!
請注意,在這個例子當中,我們並沒有使用到封包分析的動作,有的只有 IP 偽裝而已,所以:
- 對於 Client 端來說,由於已經經過了 IP 偽裝的功能,所以基本上,您通過 NAT 主機連出去的封包的 IP 都會是『 NAT 主機對外的公共 IP 』,因此對於內部 Client 端而言,由於網路 Cracker 幾乎都是根據 IP 來進行破壞,而因為您連出去的封包 IP 是 NAT 主機的公共 IP ,自然您的 Client 端就比較安全多了!基本上, Client 端在 NAT 之內,沒有安裝防火牆軟體也還好,但是『防毒軟體一定要安裝!』因為您畢竟會接收電子郵件呀等等的,所以還是可能會中毒啦!!
- 對於 Server 端來說,我們僅僅設定一些簡單的防火牆規則,而且在原本的 iptables.rule 當中還預設開啟了許多的埠口,所以其實這樣的一個主機並不是十分的安全的,因此,您最好還是自行將 iptables.rule 內的最後面的幾個開放的埠口給他註解掉才好吶!(如果您的 NAT 主機僅想要負責頻寬分享的功能的話!)