ipfw配置

来源:岁月联盟 编辑:zhu 时间:2010-02-09
ipfw配置内容简介:1.要先编译kernel 首先先在 kernel 档中加入下列内容 options IPFIREWALL options IPFIREWALL_FORWARD options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=10 options IPDIVERT options D

1.要先编译kernel

首先先在 kernel 档中加入下列内容
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
options DUMMYNET

然后再去编译 kernel 档(编译方法请参考实用设定教学中的编译kernel教学)

2.编辑 /etc/rc.conf

gateway_enable="YES" //设定本主机可做為gateway
firewall_enable="YES" //这四行是防火墙的设定
firewall_type="simple"
firewall_quiet="YES"
tcp_extensions="YES"
natd_interface="rl0" //定义natd所使用的网路卡,也就是使用真IP的网路卡,中间的rl0是网路卡的
natd_enable="YES" 代号,请注意自己的设备再填上。


3.修改 /etc/rc.firewall 档
先备份旧的rc.firewall
cp rc.firewall re.firewallbak
再移除旧的
rm rc.firewall
再来建立
vi rc.firewall


rc.firewall 内容如下

#!/bin/sh
/sbin/ipfw -f flush //先清除所有的规则

=============== 设定 nat ===============

# 这一行是允许 natd 可以在本机做任何存取动作通行
/sbin/ipfw add divert natd all from any to any via rl0

# 再把其他的通通放行 (注意!!必须放在最后一行)
/sbin/ipfw add pass all from any to any

=============== 封锁ip设定 ===============
#下面一行设定是指禁止IP為11.22.33.44的电脑连线到主机
# all ,是指 /etc/services 档案中所记载的各项服务名称。
/sbin/ipfw add deny all from 11.22.33.44 to any

=============== 实用设定 ===============


=============== 让别人ping不到 ===============
加入下列这行
ipfw add 001 deny icmp from any to 主机的真实ip via rl0

防火墙规则,加上,编号第001号(最优先处理),拒绝icmp 封包(ping 用的封包),
从任何地方连到 主机的真实ip,将此规则使用於网路卡 rl0 这样就可以了


=============== 限制使用者只能上某些网站 ===============
此设定是限制192.168.1.~254 整个网域,server ip 是设192.168.1.254
#!/bin/sh
/sbin/ipfw -f flush
/sbin/ipfw add pass all from 127.0.0.1 to 127.0.0.1 //设定server本机可以跟server本机通讯
/sbin/ipfw add divert natd all from any to any via rl0 //设定nat可以任何通行
/sbin/ipfw add pass all from 127.0.0.1 to any //让本机可以通行到任何地方
/sbin/ipfw add pass all from 192.168.1.255 to any //如果有设dhcp一定要设这行
/sbin/ipfw add pass all from 192.168.1.1/24 to 192.168.1.254 //让内部ip全部可以连上本机
/sbin/ipfw add pass all from 192.168.1.1/24 to 168.95.1.1 //开放hinet dns给使用者

#开放所有通行给该ip
/sbin/ipfw add pass all from 192.168.1.1 to any
/sbin/ipfw add pass all from 192.168.1.2 to any
/sbin/ipfw add pass all from 192.168.1.3 to any


#只开放kimo给其他使用者流览(如果开放其他ip请自行发挥)
/sbin/ipfw add pass all from 192.168.1.1/24 to 202.1.237.21 //www.kimo.com.tw的ip
/sbin/ipfw add pass all from 192.168.1.1/24 to 202.1.237.22 //kimo的图都在这ip,也必须开放

/sbin/ipfw add deny all from 192.168.1.1/24 to any //把其他上面未允许的通讯全部挡掉
/sbin/ipfw add pass all from any to any //剩下的通通放行


=============== IPFW限流 ===============

/sbin/ipfw add pipe 1 ip from any to any out
/sbin/ipfw add pipe 2 ip from any to any in
/sbin/ipfw pipe 1 config bw 64Kbit/s queue 10Kbytes
/sbin/ipfw pipe 2 config bw 64Kbit/s queue 10Kbytes

=============== 将内部假ip透过nat对映到外部 ===============
rc.conf 要先设定
ifconfig_rl0_alias0="inet 1.2.3.4 netmask 255.255.255.255" //在真ip网卡再另外设定一个ip
natd_flags="-config /etc/natd.conf" //指定nat 设定档

在/etc下建立natd.conf内容如下

redirect_address 192.168.1.1 1.2.3.4 //如此就能把内部192.168.1.1对映到1.2.3.4

而如果只要对映某一个port

在natd.conf加入一行

redirect_port tcp 192.168.1.234:5800 1.2.3.4:5800

//如此就能把内部IP192.168.1.1的PORT5800对映到1.2.3.4的PORT5800

图片内容