『壹』 紅帽子linux中,要用雙網卡實現nat功能,是不是只要配置好這兩個網卡ip地址和網關就可以實現nat功能了
理論上確實只要設置ip_forward=yes就行了,應該在/etc/network/下子文件夾中的某個配置文件,但是事實上,因為linux有防火牆,所以事實上需要在防火牆的forward鏈上做轉發,因為數據包是先碰到防火牆過濾後才進入內核空間,如果在防火牆轉發,那個設置內核的埠轉發就沒什麼意義了。
補充回答:
聲明:本人主要使用的是debian系統,對於紅帽不是非常熟悉,所以在配置文件的路徑及命名上和你的實際情況會有出入,請酌情更改!!
首先,你需要更改/etc/sysctl.conf這個文件,找到如下行:
net.ipv4.ip_forward = 0
把0改成1打開內核轉發,然後用source命令重讀該配置文件。
然後你需要用以下命令打開forward鏈上所有的轉發,這里只給你簡單的實現forward,並沒實現保護LAN的防火牆功能,請參閱參考資料獲得iptables的詳細配置方法!
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
service iptables save
service iptables restart
附註:
man iptables
命令格式:
# iptables [-t 表名] 命令 [鏈] [規則號] [條件] [規則]
說明:⑴ -t 表名 指定規則所在的表。表名可以是 filter ,nat ,mangle (小寫)
⑵ 命令 (iptables的子命令)
-A 在指定鏈中添加規則
-D 在指定鏈中刪除指定規則
-R 修改指定鏈中指定規則
-I 在指定規則前插入規則
-L 顯示鏈中的規則
-N 建立用戶鏈
-F 清空鏈中的規則
-X 刪除用戶自定義鏈
-P 設置鏈的默認規則
-C 用具體的規則鏈來檢查在規則中的數據包
-h 顯示幫助
⑶ 條件
–i 介面名 指定接收數據包介面
-o 介面名 指定發送數據包介面
-p [!]協議名 指定匹配的協議 (tcp , udp , icmp , all )
-s [!]ip地址 [/mask] 指定匹配的源地址
--sport [!]埠號 [:埠號] 指定匹配的源埠或范圍
-d [!]ip地址 [/mask] 指定匹配的目標地址
--dport [!]埠號 [:埠號] 指定匹配的目標埠或范圍
--icmp –type [!]類型號/類型名 指定icmp包的類型
註:8 表示request 0 表示relay (應答)
-m port --multiport 指定多個匹配埠
limit --limit 指定傳輸速度
mac --mac-source 指定匹配MAC地址
sate --state NEW,ESTABLISHED,RELATED,INVALID 指定包的狀態
註:以上選項用於定義擴展規則
-j 規則 指定規則的處理方法
⑷ 規則
ACCEPT :接受匹配條件的數據包(應用於I NPUT ,OUTPUT ,FORWARD )
DROP :丟棄匹配的數據包(應用於INPUT ,OUTPUT ,FORWARD )
REJECT :丟棄匹配的數據包且返回確認的數據包
MASQUERADE :偽裝數據包的源地址(應用於POSTROUTING且外網地址
為動態地址,作用於NAT )
REDIRECT :包重定向 (作用於NAT表中PREROUTING ,OUTPUT,使用要加上--to-port 埠號 )
TOS : 設置數據包的TOS欄位(應用於MANGLE,要加上--set-tos 值)
SNAT : 偽裝數據包的源地址(應用於NAT表中POSTROUTING鏈,要加上--to-source ip地址 [ip地址] )
DNAT : 偽裝數據包的目標地址(應用於NAT表中PREROUTING鏈,要加上--to-destination ip地址 )
LOG :使用syslog記錄的日誌
RETURN :直接跳出當前規則鏈
3. iptables子命令的使用實例
⑴ 添加規則
#iptables –A INPUT –p icmp –-icmp-type 8 –s 192.168.0.3 –j DROP
(拒絕192.168.0.3主機發送icmp請求)
# iptables –A INPUT –p icmp –-icmp-type 8 –s 192.168.0.0/24 –j DROP
(拒絕192.168.0.0網段ping 防火牆主機,但允許防火牆主機ping 其他主機)
# iptables –A OUTPUT –p icmp –-icmp-type 0 –d 192.168.0.0/24 –j DROP
(拒絕防火牆主機向192.168.0.0網段發送icmp應答,等同於上一條指令)
# iptables –A FORWARD –d www.sina.com -j DROP
(拒絕轉發數據包到www.sina.com,前提是www.sina.com必須被解析)
# iptables –t nat –A POSTROUTING –s 192.168.0.0/24 –j SNAT –-to-source 211.162.11.1
(NAT,偽裝內網192.168.0.0網段的的主機地址為外網211.162.11.1,這個公有地址,使內網通過NAT上網,前提是啟用了路由轉發)
# iptables –t nat –A PREROUTING –p tcp --dport 80 –d 211.162.11.1 –j DNAT -–to-destination 192.168.0.5
(把internet上通過80埠訪問211.168.11.1的請求偽裝到內網192.168.0.5這台WEB伺服器,即在iptables中發布WEB伺服器,前提是啟用路由轉發)
# iptables –A FORWARD –s 192.168.0.4 –m mac --mac-source 00:E0:4C:45:3A:38 –j ACCEPT
(保留IP地址,綁定 IP地址與MAC地址)
⑵刪除規則
# iptables –D INPUT 3
# iptables –t nat –D OUTPUT –d 192.168.0.3 –j ACCEPT
⑶插入規則
# iptables –I FORWARD 3 –s 192.168.0.3 –j DROP
# iptables –t nat –I POSTROUTING 2 –s 192.168.0.0/24 –j DROP
⑷修改規則
# iptables –R INPUT 1 –s 192.168.0.2 –j DROP
⑸顯示規則
# iptables –L (默認表中的所有規則)
# iptables –t nat –L POSTROUTING
⑹清空規則
# iptables –F
# iptables –t nat –F PREROUTING
⑺設置默認規則
# iptables –P INPUT ACCEPT
# iptables –t nat –P OUTPUT DROP
(註:默認規則可以設置為拒絕所有數據包通過,然後通過規則使允許的數據包通過,這種防火牆稱為堡壘防火牆,它安全級別高,但不容易實現;也可以把默認規則設置為允許所有數據包通過,即魚網防火牆,它的安全級別低,實用性較差。)
⑻建立自定義鏈
# iptables –N wangkai
⑼刪除自定義鏈
# iptables –X wangkai
⑽應用自定義鏈
# iptables –A wangkai –s 192.168.0.8 –j DROP
# iptables –A INPUT –j wangkai
(註:要刪除自定義鏈,必須要確保該鏈不被引用,而且該鏈必須為空,如要刪除上例定義的自定義鏈方法為:
# iptables –D INPUT –j wangkai
# iptables -F wangkai
# iptables -X wangkai