最近被调到华师来了,华师的教育网经常会down掉,为了能让自己网络正常点就装了台低配置的服务器,开始的时候,同事使用linux+iptables,总是掉包,感觉也不爽。忍受不了后,本帅哥就装上了freebsd,来解决这痛苦。
最开始的时候,使用了chinaunix上所提到的ipnat+ipfilter 来配置,编译内核后,配了半天客户端都不能ping通dns 郁闷了实在搞不定,最后没办法只能换成ipfw+natd了,然后重新编译内核,配置好后,客户端就OK了。
下面是配置步骤:
3.进入kernel_ipfw所编译的目录,一般都是../complie/kernel_ipfw
2.ee kernel_ipfw
在最后加上
# ipfirewall
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO ACCEPT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_IPDIVERT
保存后,启用命令config kernel_ipfw 然后,kernel_ipfw内核被编译。
进入后,make depend all install,编译内核后进行安装。
reboot....
4.修改/etc/rc.conf
# 第一片网卡固定的设定:
ifconfig_vr0="inet 211.75.215.107 media 100baseTX netmask 255.255.255.0"
# 只用一片网卡时,将第一片网卡虚拟出另一个IP(如果使用两片网卡,就不要设这一行,或者批注起来也可)。
ifconfig_vr0_alias0="inet 192.168.1.254 media 100baseTX netmask 255.255.255.0"
#如果你有第二片网卡时,将此网卡设定如下(当然啦,这一行的批注就应该取消,第二块网卡才会有作用)。
# ifconfig_vr1="inet 192.168.1.254 media 100baseTX netmask 255.255.255.0"
# 宣告本主机可做为gateway
gateway_enable="YES"
# 防火墙(IP-FIREWALL)
firewall_enable="YES"
firewall_type="OPEN"
firewall_quiet="YES"
tcp_extensions="YES"
# 定义 NATD 的网络卡接口,应定义在设定 public IP 的网卡代号上。
natd_program="/sbin/natd"
natd_interface="vr0"
natd_enable="YES"
# 将真实 IP 上 port:80 转向至防火墙内。这样的转向为必要时才设定,NAT实际运作只要上述两行即可。
natd_flags="-redirect_port tcp 192.168.1.220:80 211.75.215.107:80"
5. check /etc/services 中 natd 8668/divert 这个服务,如果没有请加入
6.修改 /etc/rc.firewall (提示:最好先备份一下信息)
#!/bin/sh
# ================
# 清除所有防火墙过滤的规则(归零),ipfw详细语法请:man ipfw
/sbin/ipfw -f flush
# ================
# 先定义 deny,由此处开始定义防火墙过滤的规则
# 我是比较狠一点,要挡就全部都挡住,滴水不漏。
# ================
# 这里的 all ,是指 /etc/services 档案中所记载的各项服务名称。
# 如此设定防火墙规则后,他连 ping 我的主机都别想了。
# 以下的 IP 或 Class C ,不是有入侵动作、就是乱寄广告信,我不欢迎这种人,所以拒绝提供任何服务。
# ----- spam ----- #
/sbin/ipfw add deny all from 211.22.166.45 to any
/sbin/ipfw add deny all from 216.153.141.44 to any
/sbin/ipfw add deny all from 192.72.80.7 to any
/sbin/ipfw add deny all from 61.220.214.251 to any
/sbin/ipfw add deny all from 61.154.244.0/24 to any
/sbin/ipfw add deny all from 140.113.75.248 to any
/sbin/ipfw add deny all from 61.16.11.0/24 to any
/sbin/ipfw add deny all from 61.217.135.209 to any
/sbin/ipfw add deny all from 61.225.169.0/24 to any
/sbin/ipfw add deny all from 61.227.50.0/24 to any
/sbin/ipfw add deny all from 61.228.0.0/24 to any
/sbin/ipfw add deny all from 63.119.26.216 to any
/sbin/ipfw add deny all from 64.94.217.0/24 to any
/sbin/ipfw add deny all from 64.114.31.2 to any
/sbin/ipfw add deny all from 65.30.9.44 to any
/sbin/ipfw add deny all from 65.32.169.173 to any
/sbin/ipfw add deny all from 139.175.252.20 to any
/sbin/ipfw add deny all from 163.29.255.0/24 to any
/sbin/ipfw add deny all from 192.72.81.0/24 to any
/sbin/ipfw add deny all from 193.126.14.83 to any
/sbin/ipfw add deny all from 195.190.94.200 to any
/sbin/ipfw add deny all from 203.79.166.137 to any
/sbin/ipfw add deny all from 203.198.160.118 to any
/sbin/ipfw add deny all from 203.146.235.0/24 to any
/sbin/ipfw add deny all from 203.204.139.129 to any
/sbin/ipfw add deny all from 206.154.48.203 to any
/sbin/ipfw add deny all from 207.254.20.124 to any
/sbin/ipfw add deny all from 210.85.75.0/24 to any
/sbin/ipfw add deny all from 210.208.48.108 to any
/sbin/ipfw add deny all from 211.20.175.110 to any
/sbin/ipfw add deny all from 211.21.140.133 to any
/sbin/ipfw add deny all from 211.21.191.123 to any
/sbin/ipfw add deny all from 211.75.204.163 to any
/sbin/ipfw add deny all from 211.75.220.228 to any
/sbin/ipfw add deny all from 211.78.1.3 to any
/sbin/ipfw add deny all from 211.114.30.1 to any
/sbin/ipfw add deny all from 212.67.193.231 to any
/sbin/ipfw add deny all from 216.4.172.254 to any
/sbin/ipfw add deny all from 217.11.131.182 to any
/sbin/ipfw add deny all from 217.115.144.0/24 to any
# ================
# 这一行是定义NAT的通行,如果只是设定 firewall 的话,不需要设定这一行。
/sbin/ipfw add divert natd all from any to any via vr0
# ================
# 其余的(all)都放行了,NAT 和 FireWall 都需要设定这一行。
/sbin/ipfw add pass all from any to any
如果想简单的使用,只需要/sbin/ipfw -f flush 加最后两句就可以完成。不过不够安全,
请自行斟酌安全语句。
reboot后,natd和firewall开始执行,客户端就可以上网了。
^_^ happy