iptables的問題,只允許網段中的一部分進行數據包轉發!
 
我的網絡環境是這樣!
內網 eth0 192.168.1.1 255.255.255.0
外網 eth1
現在我寫了一條規則!
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
允許整個網段的數據包轉發!
但是我想只允許網段中的一部分進行數據包轉發!
比如只轉發192.168.1.2-192.168.1.22這部分網絡地址的數據包轉發!
請問怎麼寫!
是不是:
iptables -A FORWARD -s 192.168.1.2/20 -j ACCEPT

格式應當是這樣的:IP網絡號/掩碼位數,或是直接寫IP地址,你應當把這些IP規到一個子網裡面,比如從192.168.0.1-192.168.0.30,這樣就可以寫為192.168.0.0/27
另外要加上iptables的nat相關語句。
 

後面那個20實際上是bit數,和子網一樣。
如果寫192.168.0.1/24,就是前24bit,即前3個數字有效。相當於192.168.0.*
如果寫192.168.0.1/32 就是四個數字都有效。
你要傳送2-22,可以這樣寫:

另外你是要用這個機器給其他的機器作代理上網?蓿靠梢哉庋?寫
在postrouting的地方加ip偽裝。將XXX換成你的出口設備比如ppp0或者eth0

iptables -t nat -A POSTROUTING -o XXX -s 192.168.0.1/32 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/28 -j MASQUERADE
iptables -t nat -A POSTROUTING -o XXX -s 192.168.0.23/32 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.16/29 -j MASQUERADE

第一句話屏蔽192.168.0.1,如果你自己是0.1的話就不要這句話了。
第二句屏蔽地址的前28bit,就是允許後4bit變化,這樣通過0.1-0.15
第3句是屏蔽0.23
第4句屏蔽前29bit,後3位變化,這樣通過0.16-0.23,8個地址
 

關鍵是我的網絡已經分過子網了!!網絡地址是192.168.0.0 子網掩碼是255.255.224.0!也不知道以前的網管是怎麼分的竟然用了192.168.0.0這個子網!這個子網好像是代表整個網絡!如果我要使用是192.168.20.1-192.168.20.20可以forward!那我要怎麼寫!分了子網還能再分嗎!
 

關鍵是我的網絡已經分過子網了!!網絡地址是192.168.0.0 子網掩碼是255.255.224.0!也不知道以前的網管是怎麼分的竟然用了192.168.0.0這個子網!這個子網好像是代表整個網絡!如果我要使用是192.168.20.1-192.168.20.20可以forward!那我要怎麼寫!分了子網還能再分嗎!
 

這個和你分沒有分子網哪有什麼關係。後面的掩瑪不過是你自己機器treat他們的濾鏡而已。

另外我想說,寫中文的時候,寫英文的時候不要用這麼多歎號。顯出一副吵架的架勢。
如何指定内网连续的IP地址只可以访问某一个网站,其他的网站都不可以访问。
比如只允许192.168.1.20-----192.168.1.50这些ip地址只能访问 www.baidu.com的网址,其他的网站都不能访问到。
iptables -I FORWARD -m iprange --src-range 192.168.1.20-192.168.1.50 -j DROP
iptables -I FORWARD -m iprange --src-range 192.168.1.20-192.168.1.50 -d www.baidu.com -p tcp --dport 80 -j ACCEPT
但是這上面意思是說禁止該網段可以 FORWARD 出去而只允許該網站,但是你至少要允許 dns 解析等等等,所以比較合理應該是:
iptables -I FORWARD -m iprange --src-range 192.168.1.20-192.168.1.50 -p tcp --dport 80 -j DROP
iptables -I FORWARD -m iprange --src-range 192.168.1.20-192.168.1.50 -d www.baidu.com -p tcp --dport 80 -j ACCEPT