內網 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
另外要加上iptables的nat相關語句。
如果寫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.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