当前位置: 首页 >> 开源操作系统 >> GNU/Linux和FreeBSD上的NAT网关安装笔记
 

GNU/Linux和FreeBSD上的NAT网关安装笔记

作者:车东      来源:     发表时间:2006-03-24     浏览次数:      字号:    

内容摘要 内容摘要:FreeBSD和RedHat上最简化的NAT网关安装备忘

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/tech/nat.html

关键词:nat gateway iptables ipfirewall

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!绝对不要远程调试防火墙配置!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    硬件需求:
        双网卡
        内存 > 64M
        硬盘 > 1G

    注:
    NAT网关本身效率都很高,所以即使在配置很低的机器上运行效率也是足够的(仍建议尽可能多的增加内存 > 256M),
    如果需要记录日志做分析,则会产生很大的I/O操作并占用大量硬盘空间,建议使用SCSI硬盘并做日志轮循。


    假设2块网卡分别按照以下网段设置:
    内网网卡IP地址:192.168.0.1/255.255.255.0       本身为网关
    外网网卡IP地址:111.222.111.222/255.255.255.192 网关:111.222.111.1

    安全策略:
    • 作为网关,安全性非常重要,建议除了远程登录用的SSH外,尽可能多的停掉所有不相关服务。
    • 本安装文档只是最简单的配置,没有任何安全过滤规则,更多安全过滤规则需要根据实际情况补充。

    FreeBSD 4.7上用IPFIREWALL做NAT网关

    安装FreeBSD系统时包含开发平台(gcc工具等),因为内核缺省不支持地址转发和防火墙,所以需要重新编译内核。

    内核编译
    ========
    由于内核缺省不支持地址转发和防火墙,所以需要重新编译内核:
    #cd /usr/src/sys/i386/conf/
    #cp GENERIC GATEWAY
    #vi GATEWAY

    修改后的内核配置:修改了名称和增加了IPFIREWALL的相关选项:
    #diff GATEWAY GENERIC
    25c25
    < ident         GATEWAY
    ---
    > ident         GENERIC
    62,64d61 加入IPFIREWALL选项
    < options IPFIREWALL
    < options IPFIREWALL_VERBOSE
    < options IPDIVERT

    重新编译:大约需要30分钟左右
    #/usr/sbin/config GATEWAY
    #cd ../../compile/GATEWAY/
    #make depend; make; make install

    重启机器一次,确认新的KERNEL正常启动。

    修改rc.conf中的相关配置:假设内网使用网卡fxp0,外网网卡使用xl0
    ###############################################
    gateway_enable="YES"

    ifconfig_fxp0="inet 192.168.0.1  netmask 255.255.255.0"
    ifconfig_xl0="inet 111.222.111.222  netmask 255.255.255.0"
    defaultrouter="111.222.111.1"

    natd_enable="YES"
    natd_interface="xl0"

    firewall_enable="YES"
    firewall_type="open"
    ###############################################

    防火墙过滤规则设置
    ==================
    ipfw的规则是通过运行/etc/rc.firewall这个脚本生效的,rc.firewall脚本会检查rc.conf中firewall_type等配置,然后根据firewall_type定义的模式"open" "client" "simple"等切换到rc.firewall中相应部分执行。

    一个安全的防火墙本身是一个非常复杂的策略。为了方便配置,可以以rc.firewall文件为基础,在各种缺省模式的基础上加入自己的规则。缺省最简单的防火墙配置是在rc.conf里设置使用"open"模式,

    注意:修改rc.firewall配置建议从最简单的"open"模式开始,而且让修改生效前,一定将旧的成功运行的配置文件备份成rc.firewall.bak,便于以后的错误后恢复,如果防火墙配置错误可能导致远程无法登陆,因此修改防火墙配置一定要在服务器终端界面进行。

    日志记录
    ========
    文件系统优化: 使用异步文件系统提高性能async
    vi /etc/fstab
    /dev/da0s1f             /tmp            ufs     rw,async        2       2
    /dev/da0s1g             /usr            ufs     rw,async        2       2

    修改rc.firewall中"open"模式中的配置:打开记录日志
            #${fwcmd} add 65000 pass all from any to any
            ${fwcmd} add 65000 pass log all from any to any

    修改/etc/newsyslog.conf 增加security日志的存储上限从100k到 10000K
    /var/log/security                       600  10    10000        *     Z

    新的配置生效
    ============
    修改防火墙配置后,可以用
    #sh /etc/rc.firewall
    让新的配置生效

    常用命令
    ========
    ipfw list:显示目前的配置规则:
    #ipfw list
    00050 divert 8668 ip from any to any via xl0
    00100 allow ip from any to any via lo0
    00200 deny ip from any to 127.0.0.0/8
    00300 deny ip from 127.0.0.0/8 to any
    65000 allow log ip from any to any
    65535 deny ip from any to any

    ipfw show:显示各种规则的统计信息
    # ipfw show
    00050 1008267  632203534 divert 8668 ip from any to any via vr0
    00100       0          0 allow ip from any to any via lo0
    00200       0          0 deny ip from any to 127.0.0.0/8
    00300       0          0 deny ip from 127.0.0.0/8 to any
    65000 1782079 1257247553 allow ip from any to any
    65535      36      31871 deny ip from any to any

    RedHat 8上用iptables做NAT网关

    将下列内容加入/etc/rc.local文件中:eth0绑内网IP eth1绑外网IP
    ################
    echo 1 > /proc/sys/net/ipv4/ip_forward
    /sbin/modprobe ip_tables
    /sbin/modprobe iptable_filter
    /sbin/modprobe iptable_nat
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    /sbin/iptables --flush INPUT
    /sbin/iptables --flush FORWARD
    /sbin/iptables --flush POSTROUTING --table  nat
    /sbin/iptables --policy FORWARD DROP
    /sbin/iptables --table nat --append POSTROUTING --out-interface eth1 --source 192.168.0.0/24 --jump MASQUERADE
    /sbin/iptables --append FORWARD --in-interface eth1 --match state --state ESTABLISHED,RELATED --jump ACCEPT
    /sbin/iptables --append FORWARD --source 192.168.0.0/24 --jump ACCEPT
    ################

    iptables --list查看过滤表

    参考资料:

    王波:FreeBSD使用大全
    http://tech.sina.com.cn/focus/FreeBSD/2000-01-19/196.shtml

    FreeBSD IPFW-HOWTO
    http://www.freebsd-howto.com/HOWTO/Ipfw-HOWTO

    ipfw的命令参考:
    http://www.chedong.com/phpMan.php/man/ipfw

    《linux下如何用iptables做NAT上网》原文作者:upkill98
    http://it.rising.com.cn/newSite/Channels/Safety/SysSafety/Safe_Unix/200211/06-094108327.htm

    IPTables的日志分析:
    http://www.linuxlinks.com/Software/Log_Analyzers/
    iptqlog

    软盘防火墙制作:
    http://www.zelow.no/floppyfw
    http://directory.google.com/Top/Computers/Software/Operating_Systems/Linux/Distributions/Tiny/Floppy_Sized/

    原文出处:<a href="http://www.chedong.com/tech/nat.html">http://www.chedong.com/tech/nat.html</a>

    责任编辑 webmaster

     
     
     
     
     
    评论更多>>
     
     
     
    发表
     
    姓名: QQ:
    性别: MSN:
    E-mail: 主页:
    评分: 1 2 3 4 5
    评论内容:
    验证码:
      
  1. 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  2. 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  3. 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  4. 本站管理员有权保留或删除评论内容。
  5. 评论内容只代表网友个人观点,与本网站立场无关。
  6.