当前位置:Linux教程 - Linux综合 - 以 FreeBSD 架设 NATD-Server & IP-FireWall 防火墙

以 FreeBSD 架设 NATD-Server & IP-FireWall 防火墙

  1. 前言:  o 缘起:   § Network Address Translation   § 本校于扩大内需方案执行之初分配到64个IP(四分之一个Class C),目前已明显不够使用。   § 另外,有网友提到他申请的ADSL只配给一个IP,那么公司内其它的机器怎么上网呢?   § IP-FireWall   § 近日主机常常受到特定IP的骚扰。   以下的笔记是我在家里以HiNet的ADS-L(1 IP)环境操作的。   o private ip   § RFC 1918中有分配一般私人的ip (private ip):   According to RFC 1918, you can use the following IP networks for private nets which will never be connected to the Internet:Class A 10.0.0.0 - 10.255.255.255 255.0.0.0Class B 172.16.0.0 - 172.31.255.255 255.255.0.0Class C 192.168.0.0 - 192.168.255.255 255.255.255.0  § 我挑选 Clacc C 其中一段 192.168.1.0/255.255.255.0   o 背景说明:   § 主机:FreeBSD 4.4-RELEASE。   § 目前只有安装一块网络卡(D-Link 530TX verB):IP:211.75.215.107 NetMask:255.255.255.0 Gateway:211.75.215.254  这块俗称超级机车的网络卡(相对于RedHat),自 FreeBSD 4.2-RELEASE 起就已内建支持。   § 为了建立NAT功能,同一块网卡新增一虚拟IP:192.168.1.254 NetMask:255.255.255.0,详如 /etc/rc.conf 设定。   § 目的:让其它的Win98能透过192.168.1.254为通讯闸来存取网络上的资源。   § 以下的说明文件中之"vr0",是我实际对外连上Internet的网卡代号(当您使用两块网卡做NAT时,要特别留意这一点。),你的主机网卡代号可能不同,用 dmesg 或 ifconfig -l 来查一查。   § 您也可以使用二块网卡的方式,只要对照于本文件中的网卡代号,分清楚哪一块是对外的、而哪一块又是对内的。两块网卡千万不要接在同一个HUB上,除非使用SWITCH-HUB,并切割VLAN。   2. 设定:  o kernel   § 修改kernel:  cd /usr/src/sys/i386/conf  vi GENERIC   options IPFIREWALLoptions IPFIREWALL_DEFAULT_TO_ACCEPToptions IPFIREWALL_VERBOSEoptions IPFIREWALL_VERBOSE_LIMIT=10options IPDIVERT   § 请留意,options后面是用TAB键做间隔,不是用空格键(spacebar)。   § 编译kernel:   config GENERICcd ../../compile/GENERICmake depend all install   o 在 /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="simple"firewall_quiet="YES"tcp_extensions="YES" # 定义 NATD 的网络卡接口,应定义在设定 public IP 的网卡代号上。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"   o vr0:真实IP的网卡。   o 开机后,若要更改NAT的设定:  kill -KILL `cat /var/run/natd.pid`  natd -redirect_port tcp 192.168.1.220:80 211.75.215.107:80 -interface vr0   o /etc/services  确认 /etc/services 中是否有这一行,如果没有请加上去:   natd 8668/divert   o /etc/rc.firewall  修改 /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  vr0:真实IP的网卡。   o 您可以在任何时间对 /etc/rc.firewall 档案做防火墙之规则的修改,存盘后,记得做 sh /etc/rc.firewall ,就能立即使新的规则生效。  sh /etc/rc.firewall   Flushed all rules.00100 deny ip from 140.113.75.248 to any00200 deny ip from 211.78.1.3 to any00300 deny ip from 211.21.191.123 to any00400 deny ip from 64.114.31.2 to any00500 divert 8668 ip from any to any via vr000600 allow ip from any to any  3. 备注:  o 更改过kernel需重新激活FreeBSD主机,新的设定值才会生效。请确定主机就在你身边,万一操作不当,会因为防火墙的关系,而无法从远程登入,不可不慎。   o 将Win98与这台FreeBSD接在同一组集线器(hub)上,其网络组态设定为:假设Win98的IP是在 192.168.1.1 ~ 192.168.1.255 的这段Class C上,NetMask为 255.255.255.0 ,通讯闸设为 192.168.1.254 ( 就是 FreeBSD虚拟出来的 IP ),其它的部份你应该会设定吧。  建议再使用 DHCP-Server ,让192.168.1.0/24 这个网段的各win98或工作站自动取得网络组态。   o 我尝试着从这个NAT-Server底下的Win98以Outlook EXPress透过这台NAT-Server的SMTP来寄信出去时,在/var/log/maillog留下了纪录:   Jul 9 23:54:18 www sendmail[4378]: f69FsHY04378: from=, size=1161, class=0, nrcpts=1, msgid=,proto=SMTP, daemon=MTA, relay=pc102.priv.bsdlab.idv.tw [192.168.1.102
[1] [2] 下一页 

(出处:http://www.sheup.com)


上一页 [1] [2]