路由及iptables学习笔记
啟動linux路由功能
echo "echo 1 >/proc/sys/net/ipv4/ip_forward" >> /etc/rc.d/rc.local
或者修改
vi /etc/sysctl.conf net.ipv4.ip_forward =1? 也是開啟路由轉發功能
查看\添加\修改\刪除linux靜態路由
route -n 顯示當前路由表
netstat -rn 顯示當前路由表
route add -net 添加到哪兒個網絡的路由
route add -host 添加到哪兒臺計算機的路由
route add default gw 添加默認路由(找不到合適的路由,才找這個路由,級別最低)
route delete 刪除路由
舉例:
route add -net 202.38.85.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.1.0 netmask 255.255.255.192 dev eth1
route add -net 192.168.1.64 netmask 255.255.255.192 dev eth2
route add -net 192.168.1.128 netmask 255.255.255.192 dev eth3
route add -net 192.168.1.192 netmask 255.255.255.192 dev eth4
最后指定默認網關:
route add default gw 202.38.85.1
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1
netconfig -d eth1 此命令是給eth1配置ip等信息
簡要協議下5臺機器的地址分配圖:
CentOS1(192.168.1.1<eth0>)----CentOS2(192.168.1.2<eth0>/192.168.2.1<eth1>)----CentOS3(192.168.2.2<eth0>/192.168.3.1<eth1>)----CentOS4(192.168.3.2<eth0>/192.168.4.1<eth1>)----CentOS5(<eth0>192.168.4.2)
CentOS1設置了缺省網關192.168.1.2
centOS5設置了缺省網管192.168.4.1
CentOS2 CentOS3 CentOS4 開啟了路由轉換功能
vi /etc/sysctl.conf net.ipv4.ip_forward =1(0改做1)? 也是開啟路由轉發功能
當我們從CentOS1 ping CentOS2的eth1網口ip時,是可以ping通的,因為CentOS2具有路由轉換功能
當我們從CentOS1 ping CentOS3的eth0網口時會出現如下景象:
[root@centos ~]#ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56()84 bytes of data.
就此不動了,這是表明ping包已經送達,但是沒有回應信息,為什么會這樣呢?具體說一下,ping包從萬能路由出去到CentOS2的eth0端口,然后經過centos2的路由表轉換到達Centos2的eth1端口,通過直連的網線到達192.168.2.2,CentOS3的eth0網口相應ping包,但是他的相應包不知道如何到達192.168.1.1.所以CentOS1的發出去的ping包沒有返回,就一直等著。我們應該在CentOS3上,添加路由規則:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1
然后在CentOS1上ping 192.168.4.1 不通,那就應該在CentOS2上添加路由
route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.2.2
在CentOS3上添加路由
route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.3.2
這樣就通了
zabra動態路由的設置
安裝之后支持RIP協議和OSPF協議,安裝情況明天再說。
網絡層防火墻:
ip數據報:源ip地址 目標IP地址 源端口,目標端口 協議類型(tcp還是udp),7位標志位(syn ack urg)等
網絡地址轉換NAT(network address transcate)
NAT: 保護的就是內網,所以就是以內網為參照物的
SNAT(源地址轉換,內網出去)
DNAT(目標地址轉換 外網進來)
在linux的內核中使用netfilter架構實現防火墻功能
iptables是linux系統中為用戶提供的netfilter管理工具,用于實現對linux內核中網絡防火墻的管理
iptables 缺省有5條規則鏈:
??? PREROUTING--->FORWARD--->POSTROUTING--->
??? (DNAT)??? |?????????? |?? (SNAT)
??? ??? ???? |???????????? |
??? ??? ?? INPUT????? OUTPUT
??? ??? ???? |???????????? ^?
??? ??? ???? |???????????? |
??? ??? ??? V??????????? |
??? ??? 上層應用程序(接收或發送網絡數據)
規則鏈<--->檢查點
iptables缺省有3個規則表
filter:用于設置包過濾
nat:用于設置地址轉換
mangle:用于設置網絡流量×××等應用
不同的規則表由不同的規則鏈組成
FILTER:INPUT,FORWARD OUTPUT
NAT:PREROUTING POSTROUTING OUTPUT
MANGLE:PREROUTING POSTROUTING INPUT OUTPUT 和FORWARD
規則鏈 是由匹配條件組成的最終要有一個操作。
iptables有三個主要命令:
iptables 是主要管理命令,
iptables-save命令是將當前系統的防火墻設置保存在一個文本文件中。
iptables-restore恢復
iptables服務啟動腳本
/etc/rc.d/init.d/iptables
iptables配置文件與策略設置文件
iptables配置文件
/etc/sysconfig/iptables-config
策略配置文件
/etc/sysconfig/iptables
iptables [-t 要操作的表] <操作命令> [要操作的鏈] [規則號碼][匹配條件][-j 匹配后要做的動作]
針對鏈的操作有:
-L:列出表中的所有規則
-F:清除鏈中的所有規則
-P:設置鏈的默認操作 ACCEPT REJECT DROP
-Z:計數器清零
-N:定義一個新的規則鏈
-X:刪除一個規則鏈
不加要操作的規則鏈的名字,就會對整個表操作
針對規則的操作:
-A:追加一個規則
-I:插入一個規則
-D:刪除一個規則
在規則鏈中,規則是有順序的,所以才有-A和-I參數出現
查看防火墻的狀態 iptables -L (顯示過濾表中的所有規則鏈)
[root@centos ~]# iptables -L
Chain INPUT (policy ACCEPT)
target???? prot opt source?????????????? destination????????
Chain FORWARD (policy ACCEPT)
target???? prot opt source?????????????? destination????????
Chain OUTPUT (policy ACCEPT)
target???? prot opt source?????????????? destination????????
[root@centos ~]#
iptables命令設置在系統中是即時生效的。
iptables-save命令缺省只是將配置信息顯示到標準輸出上
如果需要將iptables-save命令的輸出保存,需要將命令輸出結果重定向到指定文件中
iptables-save>/etc/sysconfig/iptables(service iptables save等價)
或:
iptables-save>ipt.v1.0
使用iptables-save命令可以將多個版本的配置保存到不同的文件中
恢復:
iptables-restore</etc/sysconfig/iptables或者
iptables-restore<ipt.v1.0恢復
#iptables -t nat -L 列出nat表的規則
#iptables -F清空filter表中所有規則
#iptables -t nat -F
刪除表中的自定義規則鏈
#iptables [-t table] -X [chain]
在INPUT規則鏈中添加規則,允許來自lo網絡接口中的所有數據包
iptables -t filter -A INPUT -i lo -j ACCEPT
在INPUT規則鏈中添加規則,允許eth0網絡接口中來自192.168.1.0/24子網的所有數據包
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
實例分析
單服務器的防護
如何做網關
如何限制內網用戶
內網如何做對外服務器。
單服務器的防護:
弄清對外服務的對象
書寫規則
??? 網絡接口lo的處理
??? 狀態檢測的處理
??? 協議+端口的處理
實例:一個普通的web服務器
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport 22,80 -j ACCEPT
iptables -A INPUT -m state --state RELATED(相關的),ESTABLISHED(已建立鏈接的) -j ACCEPT
iptables -p INPUT DROP
注意:確保規則循序正確,弄清邏輯關系,學會時刻使用-vnl
RELATED(相關的):在已有鏈接的基礎上建立新鏈接
ESTABLISHED(已建立鏈接的):已經建立鏈接的
主機防火墻策略:
#iptables -F??? #清空所有包過濾規則
#iptables -X??? #刪除所有自定義規則鏈
#iptables -Z??? #所有統計數據清零
#iptables -P INPUT DROP #默認規則丟棄
#iptables -A INPUT -i lo -j ACCEPT
#iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
#iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
#iptables -A INPUT -i eth0 -p tcp --dport 3128 -j ACCEPT
#iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#service iptables save
網關服務器配置實例:
配置需求:
??? 服務器網接口eth0的IP地址為192.168.1.1/24,eth0網絡接口與公司的內部網絡相連
??? 服務器的網絡接口ppp0是主機的撥號網絡接口,具有公網IP地址
??? 局域網中的所有主機都需要通過Linux網管服務器與外部互聯網通信
關鍵配置命令:
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
另外舉例:
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 192.168.0.20
#iptables -t nat -L
目標地址轉換:DNAT
#iptables -t nat -A PREROUTING -d 192.168.106.200 -p tcp --dport 80 -j DNAT --to 192.168.156.200:80
轉載于:https://blog.51cto.com/guoli0813/360632
總結
以上是生活随笔為你收集整理的路由及iptables学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息化十七载 ERP重塑双良战略与核心价
- 下一篇: 中小型企业纯开源免费工具的解决方案