LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1668|回复: 1

看到有弄IPTABLES没搞出来的,把我的经验贴上来,大家分享下!

[复制链接]
发表于 2007-11-2 16:36:05 | 显示全部楼层 |阅读模式
DEBIAN默认IPTABLES的确是装了,可是在默认的情况下,没有自动启动和导入IPTABLES的脚本!造成大家好像使用DEBIAN一看到IPTABLES就比较头疼!

我一开始也是一头雾水,后来想了想,就找到思路了!

IPTABLES命令有,而且也可用,内核转发没有打开,打开后,也能实现NAT上网!剩下的就是补脚本的问题了,让系统能够开机自动的重新导入策略,关机能够自动的把现在IPTABLES运行的状态保存了!(嘿嘿,我懒吧,每次修改完策略不愿意多IPTABLES-SAVE的家伙就是我)

IPTABLES的策略可以通过IPTABLES-SAVE和IPTABLES-RESTOREl来保存和恢复!(顺便说下,保存出来的文件,最好不要手工修改,里边对空行和空格的要求很高,有一次我就手工修改,导致防火墙策略上不去,我又跑去机房一次)

具体来说,看我后边的配置文件大家就清楚了!

DEBIAN使用的是SYSTEM V的方式进行开机引导!那么我们需要修改的东西就很简单了。

我们只需要在网卡启动停止的脚本中,添加相关的配置就行了。

可是脚本在哪里呢?

在网上搜索了一下,是在/etc/network/下,是网卡的配置文件。

目录结构看起来
/etc/network
├─if-down.d
├─if-post-down.d
├─if-pre-up.d
├─if-up.d
└─run
我也不知道怎么说了,反正就是应该有网卡启动停止前后的目录,还有个运行的目录,那么我们做文章就应该在这些目录里边做。

/etc/network/interfaces中,正常配置例如下边这样
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# allow-hotplug eth0
iface eth0 inet static
        address 210.83.20.67
        netmask 255.255.255.192
        network 210.83.20.0
        broadcast 210.83.203.255
        gateway 210.83.20.65
auto eth0

iface eth1 inet static
        address 192.168.144.1
        netmask 255.255.255.0
        network 192.168.144.0
        broadcast 192.168.144.255       
auto eth1

# pre-up /sbin/iptables-restore < /etc/iptables.up.rule
# /post-down /sbin/iptables-save > /etc/iptables.up.rule
上边两行回头解释

够仔细了吧,如果更白点,大家不要忘记了还有个/etc/resolv.conf中,写清楚你的DNS,例如

# generated by NetworkManager, do not edit!
nameserver 202.96.69.38


下边我们就需要让IPTABLES来加载和保存了!

首先,我在/etc/下,创建了个名字叫iptables.up.rule的文件,用来保存IPTABLES的规则。

在/etc/network/if.up和if-pre-up.d中都放置了一个脚本,叫做IPTABLES.UP,内容是

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables-restore < /etc/iptables.up.rule

因为我也没有搞清楚IPTABLES是应该在启动的时候加载还是在预启动的时候加载!反正我的策略能加载上去就OK啊!

同理,在/etc/network/if-down.d和if-post-down.d里边添加了个脚本叫做IPTABLES.DOWN,内容是

#!/bin/bash
echo 0 > /proc/sys/net/ipv4/ip_forward
iptables-save > /etc/iptables.up.rule

这样,网卡的加载和停止工作需要的脚本就OK了,大家不要忘记将我们创建的文件更改权限到可运行啊!

我是chmod 755 “文件名”的。

现在缺的就是个默认的,IPTABLES中运行的配置了。

我用下边的命令来初始化出来内存中IPTABLES的状态。

/sbin/depmod -a

/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG


echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -F -t nat
iptables -X
iptables -X -t nat

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.144.0/24 -j MASQUERADE

###############################################192.168.144.245###########################################################
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 25 -j DNAT --to-destination  192.168.144.245
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 80 -j DNAT --to-destination  192.168.144.245
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 110 -j DNAT --to-destination  192.168.144.245
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 443 -j DNAT --to-destination  192.168.144.245
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 995 -j DNAT --to-destination  192.168.144.245
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 3389 -j DNAT --to-destination  192.168.144.245


###############################################192.168.144.244###########################################################
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 8080 -j DNAT --to-destination  192.168.144.244 #
#iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 5999 -j DNAT --to-destination  192.168.144.244 #tor
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 4661 -j DNAT --to-destination  192.168.144.245 #emule
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p udp --dport 4761 -j DNAT --to-destination  192.168.144.245 #emule
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 2041 -j DNAT --to-destination  192.168.144.245 #cvs
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 3680 -j DNAT --to-destination  192.168.144.245 #svn
iptables -t nat -A PREROUTING -i eth0 -d 210.83.20.67 -p tcp --dport 6969 -j DNAT --to-destination  192.168.144.245 #bt


详细的关于IPTABLES的命令的说明,大家就不要问问我了,我现在也搞不太清楚了,但这些命令大家修改修改,应该绝对够平时应用需要内网NAT上网,外网访问内网特定服务器的需要!

关于
# pre-up /sbin/iptables-restore < /etc/iptables.up.rule
# /post-down /sbin/iptables-save > /etc/iptables.up.rule
其实是我参考网上的“有奔头”的配置,尝试了很多次失败留下的,好像DEBIAN下,不识别这两个命令,有哪个高人能够指点指点的!

嘿嘿,终于写完了,小白还有个问题就是,到底网卡启动的时候还是启动前加载IPTABLES啊?要不弄俩脚本挺丢人的!停止的时候应该用哪个目录呢?
发表于 2007-11-2 16:44:41 | 显示全部楼层
希望写得详细一些,呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表