2009年4月17日 星期五

iptables 架 VLAN 與 gateway 實作

最近自己在測試 iptables, 正樂在其中之際, 剛好公司經理與我討論, 他想用一個設備, 用在像是租房子那樣, 有多個user使用, 因為彼此不認識, 所以那個設備最好能夠提供 VLAN 功能, 也就是每戶獨立的區段來使用; 又擔心有些人會佔用到太多的頻寬, 影響到了其他使用者的權利, 因此希望那個設備能有個 QoS(頻寬管理), 把頻寬都切好, 大家都不要搶, 每個人都一樣多..., 要找到這樣的設備通常價格上感覺都有點高. 我卻心裡有了個想法, 又是用到iptables 的時候了, 呵呵~ 物盡其用阿 ^^

想說看看網站上有沒有介紹相關 VLAN 的文章, 結果意外就看到了這篇, 內容看過後雖無實際上測試, 但推敲下覺得實用性還蠻高的. 遂把實作部份擷取出來跟大家分享.

=======================================================



配置文件startup.rc的内容如下:

#设置机器名字
#根据学校名设置灵巧网关的名字
hostname gateway.xxxx

#加载相关模块
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_h323
modprobe ipt_state
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_h323

#设置每个IP最多200个连接,最多20个有效TCP连接
iplimit addlocal 192.168.0.0 255.255.0.0 200 20

#IP地址设置,后面的/28指网络掩码中1的个数,其中eth0接口上要设置多个IP地址
ip addr add 218.22.166.99/28 dev eth0
ip addr add 218.22.166.101/28 dev eth0
ip addr add 218.22.166.102/28 dev eth0
ip addr add 218.22.166.103/28 dev eth0
ip addr add 218.22.166.104/28 dev eth0

ip addr add 192.168.1.254/24 dev eth2
ip link set eth0 up
ip link set eth2 up

#IP路由设置
#缺省路由
ip route add 0/0 via 218.22.166.97
#到校内192.168.*.*的路由,下一跳是主干交换机的IP地址
ip route add 192.168.0.0/16 via 192.168.1.253

#如果要使用dhcp服务器,需要把下面行的注释删掉
dhcpd

配置文件multirun.rc的内容如下:

iptables -F
iptables -t nat -F

#地址转换,设置
# 218.22.166.101 192.168.1.11 WWW
# 102 192.168.1.12
# 103 192.168.1.13
# 104 192.168.1.14
#每个IP需要3条设置
#第一行设置进来的转换
#第二行设置出去的转换
#第三行的意义是,校内用户连接内部服务器对应的公网IP地址时,转换成是从
#灵巧网关上发起的,保证应答包能经过网关
iptables -t nat -A PREROUTING -j DNAT -d 218.22.166.101 --to 192.168.1.11
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.1.11 --to 218.22.166.101
iptables -t nat -A POSTROUTING -j SNAT -s 192.168.0.0/16 -d 192.168.1.11 --to 192.168.1.254

iptables -t nat -A PREROUTING -j DNAT -d 218.22.166.102 --to 192.168.1.12
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.1.12 --to 218.22.166.102
iptables -t nat -A POSTROUTING -j SNAT -s 192.168.0.0/16 -d 192.168.1.12 --to 192.168.1.254

iptables -t nat -A PREROUTING -j DNAT -d 218.22.166.103 --to 192.168.1.13
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.1.13 --to 218.22.166.103
iptables -t nat -A POSTROUTING -j SNAT -s 192.168.0.0/16 -d 192.168.1.13 --to 192.168.1.254

iptables -t nat -A PREROUTING -j DNAT -d 218.22.166.104 --to 192.168.1.14
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.1.14 --to 218.22.166.104
iptables -t nat -A POSTROUTING -j SNAT -s 192.168.0.0/16 -d 192.168.1.14 --to 192.168.1.254

#其他出去的转换,都转化成从网关的IP出去的
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.0.0/16 --to 218.22.166.99

#IP包过滤设置
#首先允许所有建立的连接
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -p icmp

#www服务器,允许连接TCP80端口,其他的被拒绝,并记录日志
#记录日志时每分钟最多记录10条日志
iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.11 --dport 80
iptables -A FORWARD -j LOG -d 192.168.1.11 -m limit --limit 10/min --log-prefix " WWW "
iptables -A FORWARD -j REJECT -d 192.168.1.11

#mail服务器
iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.12 --dport 25
iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.12 --dport 80
iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.12 --dport 110
iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.12 --dport 143
iptables -A FORWARD -j LOG -d 192.168.1.12 -m limit --limit 10/min --log-prefix " mail "
iptables -A FORWARD -j REJECT -d 192.168.1.12

#192.168.1.13
iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.13 --dport 80
iptables -A FORWARD -j LOG -d 192.168.1.13 -m limit --limit 10/min --log-prefix " 1.13 "
iptables -A FORWARD -j REJECT -d 192.168.1.13

#192.168.1.13
iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.14 --dport 80
iptables -A FORWARD -j LOG -d 192.168.1.14 -m limit --limit 10/min --log-prefix " 1.14 "
iptables -A FORWARD -j REJECT -d 192.168.1.14

4.DHCP配置
使用DHCP可以简化网络的管理。考虑到可靠性,一般不建议使用Windows 2000Server作为DHCP服务器,而建议使用交换机或灵巧网关作为DHCP服务器。

在校园网中使用DHCP服务器时,如果DHCP服务器和客户被三层交换机隔离开,需要在三层交换机上使用dhcp relay把客户机的DHCP请求转发到DHCP服务器。

把灵巧网关作为DHCP服务器,需要以下设置:

配置dhcpd.cf文件

在startup.rc中启动dhcpd

下面是dhcpd.cf的配置实例:

#缺省的域名
option domain-name "xxxx.net";
option domain-name-servers 202.102.192.68;
default-lease-time 60000;
max-lease-time 72000;

#如果使用WINS服务,设置WINS服务器
#option netbios-name-servers 192.168.1.1;
#option netbios-dd-server 192.168.1.1;
#option netbios-node-type 8;

#eth0接口,不启用DHCP
subnet 218.22.166.96 netmask 255.255.255.248 {
not authoritative;
}

#其他
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.30 192.168.1.200;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
}

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.30 192.168.2.200;
option broadcast-address 192.168.2.255;
option routers 192.168.2.254;
}

subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.30 192.168.3.200;
option broadcast-address 192.168.3.255;
option routers 192.168.3.254;
}

subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.30 192.168.4.200;
option broadcast-address 192.168.4.255;
option routers 192.168.4.254;
}

============================================================
[註] 以上內容原處為: http://www.cnx8.com/fwq-fh-iptables/2004-09-17-04-47-04.htm

2009年4月16日 星期四

iptables 之 NAT 章節

作者: Baron. Wan

前文提到些許的 iptables 的觀念, 希望自己能牢牢記住, 接下來要討論有關於 nat 的部份-- 轉址, 轉 port, 常常轉到後來自己先暈頭, 哈哈~ 無聊自己寫來笑一笑也爽. 廢話說太多了 ^^" 根據自己測試之後, POSTROUTING 與 PREROUTING 的設定規則是這樣:

1. 由內往外轉, 這個部份大都用在連外ip數量不足以供應龐大內需(聽起來好像在說經濟學的樣子~ 呵呵), 因此大量內部的ip區段轉由外部的特定ip, 來因應連外的需求.
-A POSTROUTING -s <內> -j SNAT --to <外>
[註] 以下樣本有經過實測, 唯 ip 有做變更, 但格式是可通行的.
Example: iptables -A POSTROUTING -p tcp -s 192.168.0.0/24 --sport 1024:65535 -j SNAT --to 211.23.115.91:80

2. 由外往內轉, 這個部份是由於在內部架設了一些站台, 經由防火牆導到內部的特定位置.
-A PREROUTING -d <外> -j DNAT --to <內>
[註] 以下樣本有經過實測, 唯 ip 有做變更, 但格式是可通行的.
Example: iptables -A PREROUTING -d 211.23.115.91 -j DNAT --to 192.168.0.151:80 (Web Site)

2009年4月14日 星期二

DNS 指定同一 Domain 方法

研究者: Baron. Wan
@          IN     NS    sample.com.tw.
@          IN     A     192.168.0.252
www        IN     A     192.168.0.117
mail       IN     A     192.168.0.121
IN     MX 10 mail.sample.com.tw.
*          CNAME        sample.com.tw.

--------------------------------------
上述的方式, 結果在解析:
www.sample.com.tw 會得到 192.168.0.117
mail.sample.com.tw 會得到 192.168.0.121
sample.com.tw 會得到 192.168.0.252
解析 sample.com.tw 的 mx record, 會得到 192.168.0.121

上述:
*          CNAME        sample.com.tw. 

解析 <其他>.sample.com.tw 都會得到 192.168.0.252

Linux 超強防火牆 iptables

作者: Baron. Wan

在上文中, PJ. 介紹了用Linux 實做出一個 ip sharing, 文中內容我們後來採用了 forward 來做一個基本的阻擋, 但如果只使用 forward 來做阻擋條件, 先決條件 input 以及 output 都必須 accept 才行; PJ. 其實以前在設定 iptables 時, 時常設定到後來, input, output 都混亂了, 搞到自己都不知道自己在設甚麼 = =", 以至於後來對 iptables 總是敬而遠之.

但是這樣是不會成長的! 也是最近又興起了用 Linux 來實做 ip sharing 的念頭 (自己沒錢買設備, 而且自己學習Linux 已有一段時日, 如果不實做出來, 實在愧於天地啊!! ~~ 哈, 好像嚴重了點...). 就在自己的強力意念下, 這次真的是一步一腳印, 由寬到緊, 慢慢的了解了它的設定方式.

這篇文章著重於觀念導正, 也是學習 iptables 最重要的心法. PJ. 先來介紹 iptables 三種 chain: (mangle) --> (nat) --> (filter) , 這是優先順序, 也就是 mangle 大於 nat, nat 大於 filter; 這是甚麼呢?! 我們先來看看各 chain 的架構:
1. [mangle] ---------[PREROUTING]
+---[INPUT]
+---[OUTPUT]
+---[FORWARD]
+---[POSTROUTING]

2. [nat] ------------[PREROUTING]
+---[OUTPUT]
+---[POSTROUTING]

3. [filter] ---------[INPUT]
+---[FORWARD]
+---[OUTPUT]


舉例來說, 如果在 nat 的 output 設A ip 便阻擋, filter 的 output 設A ip 允許進入, 依順序, 當A的ip來源封包到了 nat 便被阻擋, 因此無法到達 filter; 所以在設定時要多多注意.

一個封包進入後的流程:


PREROUTING -- 在進入路由之前, 對封包所作的判斷. (pre 有預先之意)
INPUT -- 進入主機之前, 對封包所作的判斷.
OUTPUT -- 經由主機送出封包時, 所作的判斷.
FORWARD -- 轉送, 經由路由判斷出, 目的地為其他主機的封包, 所以不進入本機local, 而轉送到另一個網路介面.
POSTROUTING -- 接收來自OUTPUT與FORWARD來的封包, 進行最後一次的判斷確認.

最後, PJ. 認為學習 iptables 最重要的觀念, 因為 PJ. 以前常設定到頭昏腦脹, 結果就在畫了這張 IN OUT 的關係圖之後, 一切都豁然開朗了, 哈~



接下來就是我自己實做的內容, 與大家分享. PJ. 認為, 自己實際上測試獲益最大^&^.
環境說明:
eth1: 192.168.0.0/24
eth0: 172.22.20.0/24

#
# INPUT:: intranet --> FW <-- internet
# iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -i ! lo -s 127.0.0.1/8 -j DROP
iptables -t filter -A INPUT -p icmp --icmp-type 8 -i eth0 -d 172.22.20.0/24 -m state --state NEW -j ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type 8 -i eth1 -s 192.168.0.0/24 -m state --state NEW -j ACCEPT
iptables -t filter -A INPUT -p udp -s 192.168.0.0/24 -i eth1 --dport 445 -j ACCEPT
iptables -t filter -A INPUT -p udp -s 192.168.0.0/24 -i eth1 --dport 137:139 -j ACCEPT
iptables -t filter -A INPUT -p tcp -i eth1 -s 192.168.0.0/24 --dport 110 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A INPUT -p tcp -i eth1 -s 192.168.0.0/24 --dport 22 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# 在 forward 處再加以限制, 不過也可以只在 input & output 做判斷的, PJ. 認為個人喜好.
# iptables -t filter -A FORWARD -p icmp --icmp-type 8 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -s 192.168.0.0/24 -o eth0 --dport 22 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth1 -s 192.168.0.0/24 -o eth0 --dport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -s 192.168.0.0/24 -o eth0 --dport 25 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -s 192.168.0.0/24 -o eth0 --dport 110 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -s 192.168.0.0/24 -o eth0 --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -s 192.168.0.0/24 -o eth0 --dport 443 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth1 -o eth0 -s 192.168.0.0/24 -d 172.22.20.0/24 --dport 137:139 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth1 -o eth0 -s 192.168.0.0/24 -d 172.22.20.0/24 --dport 445 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.0.0/24 --sport 22 --dport 1024:65535 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.0.0/24 --sport 25 --dport 1024:65535 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.0.0/24 --sport 110 --dport 1024:65535 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth0 -o eth1 -d 192.168.0.0/24 --sport 53 --dport 1024:65535 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.0.0/24 --sport 80 --dport 1024:65535 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.0.0/24 --sport 443 --dport 1024:65535 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth0 -o eth1 -s 172.22.20.0/24 -d 192.168.0.0/24 --sport 137:139 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth0 -o eth1 -s 172.22.20.0/24 -d 192.168.0.0/24 --sport 445 -j ACCEPT
#
# OUTPUT:: FW --> internet
#
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A OUTPUT -o ! lo -d 127.0.0.1/8 -j BADPKT

iptables -t filter -A OUTPUT -p icmp --icmp-type 8 -o eth0 -s 172.22.20.0/24 -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth0 -s 172.22.20.0/24 --dport 80 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth0 -s 172.22.20.0/24 --dport 443 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p udp -o eth0 -s 172.22.20.0/24 --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth0 -s 172.22.20.0/24 --dport 25 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth0 -s 172.22.20.0/24 --dport 110 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth0 -s 172.22.20.0/24 --dport 22 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth0 -s 172.22.20.0/24 --dport 123 --syn -m state --state NEW -j ACCEPT
#
# OUTPUT:: FW --> intranet
#
iptables -t filter -A OUTPUT -p udp -s 172.22.20.0/24 -d 192.168.0.0/24 -o eth1 --sport 445 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -s 172.22.20.0/24 -d 192.168.0.0/24 -o eth1 --sport 137:139 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth1 -s 172.22.20.0/24 -d 192.168.0.0/24 --dport 22 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth1 -d 192.168.0.0/24 --sport 110 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth1 -d 192.168.0.0/24 --sport 25 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p udp -o eth1 -d 192.168.0.0/24 --sport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth1 -d 192.168.0.0/24 --sport 80 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -o eth1 -d 192.168.0.0/24 --sport 443 --syn -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -p icmp --icmp-type 8 -o eth1 -d 192.168.0.0/24 -m state --state NEW -j ACCEPT

iptables -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

上面是片段內容, 主要參照本文來設計, PJ. 發現, 如對防火牆設定不甚了解的人, 在經由 iptables 的洗禮後, 都會馬上變防火牆設定高手, 哈哈~~

本文還有一個重點, Debug, 是阿, 如果架好的 firewall 不知道如何 debug, PJ. 覺得這樣會跟瞎子摸象一樣, 所以工欲善其事,必先利其器^^. 來吧, 最重要的 debug 也要加入喔; 在 /etc/syslog.conf 中加入:
kern.warning /var/log/iptables.log

存檔後記得restart syslog service 喔.

然後在 firewall 的 script 當中加入:
iptables -A INPUT -j LOG --log-level 4 (level 4 = warning)
or
iptables -A INPUT -j LOG --log-prefix "*** INPUT FIREWALL ***" 也可.

-A 後面的 chain 自己代, 以上.

[註] 參考文獻: Linux iptables 技術實務 -- 施威銘研究室

2009年4月10日 星期五

用 linux 架設 ip shareing (bata)

作者: Baron. Wan

曾經想過, 當自己學了 Linux 系統一陣子之後, Linux 除了架站, 還可以拿來做什麼? 剛好自己有兩台主機, 想說不然就不要花錢買 ip shareing, Linux 不是甚麼都能架嗎? (它在我心中已經快接近神器了,哈哈~) 來架架看吧, 不過, 萬事起頭難, 剛開始就想打退堂鼓, 原因自己曾經試著用 iptables, 但是時常後來都搞得越來越糟糕... 但是怎麼辦呢? Linux 就它最強悍了(網路上說的), 好吧! 那就真的來好好研究一下.

研究了一陣子, 就在修修改改當中, 嘿~ 竟然就這樣成功了, 然後自己也終於知道 forward 的功用在哪裡. 在製作 script 之前呢, 有幾項東西要先給它加入:
echo 1 \> /proc/sys/net/ipv4/ip_forward #這是開啟ip forward 功能, 這是最重要的. 要做 nat 的話, 底下內容也可一併載入.

modprobe ip_tables #載入iptables 模組
modprobe ip_nat_ftp #作用是讓區域網路可以連上ftp
modprobe ip_conntrack #這是 ip連線追蹤模組
modprobe ip_conntrack_ftp #連線追蹤 ftp 模組
modprobe ip_conntrack_irc #連線追蹤 irc 模組

接下來我說明一下我測試的環境:
1. A 為 CentOS5 Linux 環境, 有兩張網卡 eth0: 10.16.35.228 eth1: 192.168.0.254
2. B 為我日常都在使用的 ubuntu, 一張網卡 eth0: 192.168.0.215
3. 將 B 的 eth0 網路連線到 A 的 eth1
4. A 的 eth0 連到 HUB or 外面的網路環境 (如果直接連外, 同時是用 pppoe 連線方式, 則請將 eth0 改為 ppp0)

要測試之前, 我們知道, 最基本必須先讓 B 電腦可以上網, ok, 讓我們開始來實做它.
# 讓區網可以做基本的檢測動作 ping. (我自己認為這很重要)
iptables -t filter -A FORWARD -p icmp --icmp-type 8 -j ACCEPT
# 這兩行是說明網卡可以互通. (最基本的動作)
iptables -t filter -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -o eth1 -j ACCEPT
# 來源區段 192.168.0.0/24 通過 eth0(外部) 時, 將封包偽裝
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

以上, 最基本的動作, 恭喜, 這樣基本上就可以讓 eth1 連外了; 之後我們可以慢慢在條件上增加限制, 來加強防護能力, 以下是 PJ. 做一個小小示範:

iptables -t filter -A FORWARD -p tcp -i eth1 -o eth0 --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -o eth0 --dport 443 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -o eth0 --dport 25 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -o eth0 --dport 110 -j ACCEPT
iptables -t filter -A FORWARD -p udp -i eth1 -o eth0 --dport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -o eth0 --dport 22 -j ACCEPT

然後記得, 預設中所有的 chain 都是 ACCEPT 型態的, 我在 script 當中加入
iptables -F FORWARD
iptables -t nat -F POSTROUTING
iptables -P FORWARD DROP
iptables -t nat -P POSTROUTING DROP

在前面位置, 將他們一開始就先設定好.

接下來就可以來做閘道式防火牆, 前提我們會先溝通好一些觀念, 這蠻重要的.

2009年4月6日 星期一

Linux 的特殊能力

喜愛 Linux 的同好們, 都會自己發掘的一些 Linux OS 上的特殊功能, 以下就來介紹一下吧!

  • 讓你誤以為當機的功能. [左ctrl+s], 按下後, 你 key 入的任何東西, 都不會顯示也沒有任何反應出現; 我個人認為這個功能比較適合在 key 一些自己不想讓旁邊的人知道的指令動作; 要顯示執行就按 [左ctrl+q], 按下後會執行剛剛按下的任何動作.
  •  Linux script on background when logout ,當你想離開系統又希望程式能駐留在系統中繼續執行,有兩個做法:
    1. 採用 nohup  command & 的方式,這是最直接的做法。預設會將過程輸出在 onhup.out。
      example:  nohup yum install -y hadoop-hdfs-namenode &
    2. 運行 screen,然後在 shell > 執行 要背景執行的命令,最後按下 [Ctrl] + [A] --> [D]。exit 可離開該模式,重新進入執行 `screen -r`。
    3. 當有一程式正在運行時,按下 [Ctrl] + [z],然後執行 `bg`,則該程式會被丟到背景下 RUN。再執行 `disown -h`,就會將程式駐留在記憶體中;這時離開系統,程式依然繼續執行。