linux: nat and iptablesITeyeitjob - 牛牛娱乐

linux: nat and iptablesITeyeitjob

2019-02-01 10:38:50 | 作者: 迎夏 | 标签: 规矩,假设,地址 | 浏览: 5667

 

-操控某个网段是否能够上网,iptables的规矩和履行次序(匹配一次)-

网络架构一般是一个外网ip,内网的用的是192.168.0.0/16 段的ip。
在网关的机子上装备好了nat今后,要操控某些人不能上网,咋搞咧?呵呵,我把 我的经历写下来吧,搞公司的电脑,搞了几个小时的效果。

比方网关的内网ip是 192.168.0.1  ,客户机的则是0.2等等啦,现在我想让0.3ip的机子能够上网,其他的都不能上,这么来

iptables -I FORWARD 1 -s 192.168.0.2 -d 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD 2 -s 192.168.0.0/24 -d 0.0.0.0/0 -j DROP

阐明一下,榜首条指令的意思就是:在filt表里面的FORWARD链的榜首行参加答应0.2这个ip地址的机子拜访任何ip地址。

第二条指令意思:回绝局域网内一切的机子拜访网络。

为什么非要这么设置呢?(履行规矩)
咱们留意了,iptables防火墙规矩是有先后次序的,防火墙匹配规矩是从榜首条开端匹配,假设契合,则不再匹配第二条,假设不契合,则接着匹配第二条,同理,假设匹配了,则完毕匹配,假设依然不匹配,则接着向下,一直到匹配中止。
所以这个次序是适当重要的。

假设现在有个ip为0.3的机子想拜访网络,iptables开端匹配榜首行,发现不匹配,则持续匹配第二行,这个时分,匹配了,所以履行drop的动作。


-I -D的差异:一个刺进一条规矩,一个是增加一条规矩


同理,假设还想持续增加能够上网的机子,则应该如下指令
iptables -I FORWARD 2 -s 192.168.0.X -d 0.0.0.0/0 -j ACCEPT
这个当地留意了,为什么序号仍是2呢?
这个指令的意思是在Forward链的第二行参加一行,等这个指令履行今后,用iptables -L检查的时分,就会发现
iptables -I FORWARD 2 -s 192.168.0.0/24 -d 0.0.0.0/0 -j DROP 这个指令现已变成第三行了,理解了,-I参数的效果就是刺进的意思,今后的顺次往后推。

最重要的一点,就是要确保最终的一条就是回绝一切。

还有一点要留意,操控网络拜访权限必定要用forward链,由于input链是操控本机的,forward链则是操控转发的链。

 

-操控某一个网段

/sbin/iptables -P FORWARD -j ACCEPT
/sbin/iptables -A FORWARD -m iprange src-range 192.168.0.3-192.168.0.61 -j DROP

 

低于1.2.4如同无法直接匹配部分IP地址,源地址只能匹配单个IP地址或许IP地址段
只能用个循环来完成了
i=10;
while [ $i -le 50  ]
do
iptables -A FORWARD -s 192.168.0.$i -j DROP
i=`expr $i + 1`

 

-增加某条规矩

 

在某些情况下,咱们可能要制止某个IP或某个网段的核算机上网。
假设要制止IP地址为192.168.0.3的客户机上网,能够这样设:
/sbin/iptables -A FORWARD -s 192.168.0.3 -j DROP

假设要制止192.168.0.0这个子网里所以有客户机上网,能够这样设:
/sbin/iptables -A FORWARD -s 192.168.0.0/24 -j DROP

其间“/24”表明制止整个C 类网段拜访INTERNET.

不过我发现咱们公司的用上面的语法不好用,在其他当地好用。不知是为什么呀。

咱们公司的语法是这样的才好用呀。语法如下:
假设要制止IP地址为192.168.0.3的客户机上网,能够这样设:
/sbin/iptables -t nat -A PREROUTING -s 192.168.0.3 -j DROP

假设要制止192.168.0.0这个子网里所以有客户机上网,能够这样设:
/sbin/iptables -t nat -A PREROUTING -s 192.168.0.0/24 -j DROP

 

-删去某条规矩

-A 增加一条规矩
-D 删去一条规矩
-I 刺进一条规矩
-F 清空一个链


咱们能够用两种方法中的任一种删去规矩。 首要,由于知道这是INPUT链中仅有的规矩,咱们用编号删去:
# iptables -D INPUT 1
删去INPUT链中的编号为1的规矩

 

运用line-numbers参数,列出的表中最初一个是NUM。
然后依据NUM很快删去的。
iptables -D chain rulenum [options]

例如:
列出规矩
[root@localhost rc.d]# iptables -L FORWARD line-numbers
Chain FORWARD (policy DROP)
num  target     prot opt source               destination         
1    REJECT     tcp    anywhere             anywhere            tcp dpt:microsoft-ds reject-with icmp-port-unreachable
2    REJECT     tcp    anywhere             anywhere            tcp dpt:135 reject-with icmp-port-unreachable
3    REJECT     tcp    anywhere             anywhere            tcp dpt:netbios-ssn reject-with icmp-port-unreachable
4    REJECT     udp    anywhere             anywhere            udp dpt:microsoft-ds reject-with icmp-port-unreachable
5    REJECT     udp    anywhere             anywhere            udp dpt:135 reject-with icmp-port-unreachable
...
...
删去指定行规矩:
[root@localhost rc.d]# iptables -D FORWARD 4



第二种方法是 -A 指令的映射,不过用-D替换-A。 当你的链中规矩很杂乱,而你不想核算它们的编号的时分这就非常有用了。这样的话,咱们能够运用:
# iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
-D的语法有必要和-A(或许-I或许-R)相同准确。假设链中有多个相同的规矩,只会删去榜首个。

 

 

-置两块网卡时,呈现的问题,不听的呈现一下信息

https://21nw.com/wk/kernel%3A_martian_source_255.255.255.255

 

NET: 7 messages suppressed.
NET: martian source 192.168.10.255 from 192.168.10.20, on dev eth0
NET: ll header: ff:ff:ff:ff:ff:ff:00:02:55:07:61:fb:08:00
NET: 5 messages suppressed.
.......

 

两块网卡,只设置为同一个网段时,iptables,就会发生以上过错。中止其间一块就不报错了。可能是测验环境才有这样的问题呈现。

 

DNS的问题

 

其间有一台机器,ACCEPT,能够上网,可是只能上qq msn,网上地址什么都打不开,后来,直接ping ip地址是能够通的,这样就根本确定是dns的问题了,修改了网关的/etc/resolv.conf,增加了相应的nameserver,可是仍是不能够。

几经曲折,在主机上直接设置DNS,哈哈,能够了。

 

这应该跟测验环境也有必定的联系。

 

以下为简略firewall set:

 

iptables.rule

#!/bin/bash
# 
# dos2unix iptables.rule
# chmod 755 iptables.rule
# /usr/local/virus/iptables
# mkdir -p /usr/local/virus/iptables
# mv / /iptables.rule /usr/local/virus/iptables
# /usr/local/virus/iptables/iptables.rule
# iptables -L -n
# /etc/rc.d/rc.local
# /usr/local/virus/iptables/iptables.rule
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
#
# English: Please input your networks parameters ( including your LAN NIC )
 EXTIF="eth1"
 INIF="eth0"
 INNET="192.168.1.0/24"
 export EXTIF INIF INNET
# These settings is about yourselfs paramters.
 allowname=
 allowip=""
 if [ "$allowname" != "" ]; then
 for siteiptmp in `echo $allowname`
 siteip=`/usr/bin/host $siteiptmp 168.95.1.1 | grep address|tail -n 1 | awk {print $4}`
 testip=`echo $siteip | grep [^0-9.]`
 if [ "$testip"  "" ]; then
 allowip="$allowip $siteip"
 done
 export allowip

# First, your servers firewall settings.
# 1. the kernels firewall settings.
 # TCP Floodings setting. this setting is no good for high loading servers
 echo "1" /proc/sys/net/ipv4/tcp_syncookies
 # unset reply of ping.
 echo "1" /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
 echo "1" $i
 done
 # record some problems packets.
 for i in /proc/sys/net/ipv4/conf/*/log_martians; do
 echo "1" $i
 done
 for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do
 echo "0" $i
 done
 for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do
 echo "0" $i
 done
 for i in /proc/sys/net/ipv4/conf/*/send_redirects; do
 echo "0" $i
 done
# 2. clear rule, set the policy rule and allow lo connect.
 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
 iptables -F
 iptables -X
 iptables -Z
 iptables -P INPUT DROP
 iptables -P OUTPUT ACCEPT
 iptables -P FORWARD ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -m state state RELATED -j ACCEPT
# 3. other shell scripts, written by VBird.
 if [ -f /usr/local/virus/iptables/iptables.deny ]; then
 sh /usr/local/virus/iptables/iptables.deny
 if [ -f /usr/local/virus/iptables/iptables.allow ]; then
 sh /usr/local/virus/iptables/iptables.allow
 if [ -f /usr/local/virus/httpd-err/iptables.http ]; then
 sh /usr/local/virus/httpd-err/iptables.http
 iptables -A INPUT -m state state ESTABLISHED -j ACCEPT
# 4. allow some types of ICMP
# AICMP="0 3 3/4 4 11 12 14 16 18"
# for tyicmp in $AICMP
# iptables -A INPUT -i $EXTIF -p icmp icmp-type $tyicmp -j ACCEPT
# done
# iptables -A INPUT -p TCP -i $EXTIF dport 22 -j ACCEPT # SSH
# iptables -A INPUT -p TCP -i $EXTIF dport 25 -j ACCEPT # SMTP
# iptables -A INPUT -p UDP -i $EXTIF dport 53 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF dport 53 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF dport 80 -j ACCEPT # WWW
# iptables -A INPUT -p TCP -i $EXTIF dport 110 -j ACCEPT # POP3
# iptables -A INPUT -p TCP -i $EXTIF dport 443 -j ACCEPT # HTTPS                          
			
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章