1. 设置IP地址、网关
ee /etc/rc.conf 
ifconfig_em0="inet 192.168.21.173 netmask 255.255.255.0"   #设置IP地址,子网掩码
defaultrouter="192.168.21.2"    #设置网关
hostname="FreeBSD"              #设置主机名字

2. 设置DNS
ee /etc/resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.4.4
按esc回车,再按a保存文件
sh /etc/rc 或 /etc/netstart       #重启网卡

3. 开启ssh
首先vi编辑/etc/inetd.conf,去掉ssh前的#,保存退出 (开启****ssh服务)
编辑/etc/rc.conf
最后加入:sshd_enable="yes"即可
激活sshd服务:
#/etc/rc.d/sshd start
用下面命令检查服务是否启动,在22端口应该有****。
#netstat -an |grep 22

修改freebsd可以用sshd权限用户登录ssh 但不能用root用户登录的方法
在/etc/ssh/sshd_config文件最后加入 
PermitRootLogin yes
PermitEmptyPasswords no
PasswordAuthentication yes

4. 编译内核
cd /usr/src/sys/amd64/conf
cp GENERIC kernel.ipf
ee kernel.ipf
添加如下内容
#for ipf
options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK

===============可选项=====================
# 使用RANDOM_IP_ID阻止外界了解网关生成包的情况(可选项)
options RANDOM_IP_ID
也可以对内核做优化,去掉所有和你的硬件无关的硬件相关options。比较有效的确定方法是观察dmesg输出。查看和kernel文件处于同一目录的LINT可以帮助你了解全部可用设置。编译、安装内核
==============可选项结束==================

cd /usr/src
make buildkernel KERNCONF=kernel.ipf
make installkernel KERNCONF=kernel.ipf
reboot (最好在相关的配置都做完入,/etc/ipf.rules 和相关的策略也做好再重启)

这种编译方法将保留原来的kernel为kernel.old,这样如果你做错了什么,就有机会通过boot:出现时输入kernel.old来恢复。

5. 编辑/etc/rc.conf
停止所有不需要的服务。编辑/etc/rc.conf并确认inetd、portmap、sendmail这些守护者都被禁止了。
inetd_enable="NO"
portmap_enable="NO"
sendmail_enable="NO"
为了以防万一,最好将/etc/inetd.conf中关于这些服务的设置注释掉。如果确实需要远程登陆,那么应该安装ssh并且添加如下语句:
sshd_enable="YES"
到/etc/rc.conf。一旦你禁用了所有不需要的服务,你就可以到http://www.unixcircle.com/memberonly/portscan.php3去进行一次远程扫描

6、启动时激活 IPF
ee /etc/rc.conf
ipfilter_enable="YES"             # 启动 ipf 防火墙
ipfilter_rules="/etc/ipf.rules"   # 将被加载的规则定义, 这是一个文本文件
ipmon_enable="YES"            # 启动 IP 监视日志
ipmon_flags="-Ds"                # D = 作为服务程序启动
# s = 使用 syslog 记录
# v = 记录 tcp 窗口大小、 ack 和顺序号(seq)
# n = 将 IP 和端口映射为名字
如果在防火墙后面有使用了保留的私有 IP 地址范围的 LAN, 还需要增加下面的一些选项来启用 NAT 功能:

gateway_enable="YES"            # 启用作为 LAN 网关的功能
ipnat_enable="YES"                 # 启动 ipnat 功能
ipnat_rules="/etc/ipnat.rules"    # 用于 ipnat 的规则定义文件

7. ipf.rules策略配置
#############Performance#########################
block in quick all with opt lsrr
block in quick all with opt ssrr
block in quick all with ipopts
block in quick all with frags
block in quick all with short
#############permit lo and icmp ###########################
pass in quick on lo0 all
pass out quick on lo0 all
pass in quick proto icmp all
pass out quick proto icmp all
##########################
pass in quick on em1 proto tcp from 20.1.1.0/24 to 10.1.1.0/24 port = 22 flags S keep state
pass in quick on em1 proto tcp from 20.1.1.0/24 to 10.1.1.100/32 port =80

#################下面的策略摘自网络#############
# 允许包括碎片和SYN标志的经过翻译的包进入。
pass in quick on ep1 proto tcp from any to any port = 25 flags S keep state keep frags
均衡负载:
为了在NAT后面的6台镜象web服务器实现均衡负载,使用round-robin语句。IPFilter将把负载均衡分配给这些服务器,甚至在某台down掉的情况下。
rdr ep1 0.0.0.0/0 port 80 -> 192.168.1.1,192.168.1.2 port 80 tcp round-robin
rdr ep1 0.0.0.0/0 port 80 -> 192.168.1.3,192.168.1.4 port 80 tcp round-robin
rdr ep1 0.0.0.0/0 port 80 -> 192.168.1.5,192.168.1.6 port 80 tcp round-robin
######################################

8. ipnat.rules
map dc0 10.0.10.0/29 -> 0/32 proxy port 21 ftp/tcp #处理来自内网的 FTP 访问 ftp Proxy应该放在首行
map em0 20.1.1.0/24 -> 0/32 #将内部lan 20.1.1.0/24 网段ip转换为出口em0的ip
rdr em1 20.1.1.1/32 port 80 -> 10.1.1.100 port 80 tcp #将所有访问网关出口地址20.1.1.1的80端口映射到内部10.1.1.100 的80端口

9. 停止ipf防火墙: ipf -D -f /etc/ipf.rules
启用 ipf -E -f /etc/ipf.rules
删除所有内部规则并重新加载配置文件 ipf -Fa -f /etc/ipf.rules

要重新加载 NAT 规则, 可以使用类似下面的命令:
# ipnat -CF -f /etc/ipnat.rules

如果想要看看您系统上 NAT 的统计信息, 可以用下面的命令:
# ipnat -s

要列出当前的 NAT 表的映射关系, 使用下面的命令:
# ipnat -l

要显示详细的信息并显示与规则处理和当前的规则/表项:
# ipnat -v

10. FreeBSD添加静态路由
# route add -net 192.168.2.0/24 192.168.1.2      #手工添加,重启后路由丢失
# ee /etc/rc.conf       #通过rc.conf文件永久配置
#Add static route      
static_routes="net1 net2"
route_net1="-net 192.168.0.0/24 192.168.0.1"
route_net2="-net 192.168.1.0/24 192.168.1.1"

FreeBSD之基本配置的更多相关文章

  1. FreeBSD 系统的配置.

    SSH 配置 vi /etc/ssh/sshd_config 修改下面的项目 RSAAuthentication yes PermitRootLogin yes PermitEmptypassword ...

  2. ubuntu下virtualbox安装freebsd及初步配置

    最近尝试了在虚拟机中安装freebsd并进行尝试性的使用 获取镜像 在freebsd的官网,https://www.freebsd.org,即可看到 "Download Freebsd&qu ...

  3. FreeBSD csh shell 配置

    在/etc/csh.cshrc里面加入: alias ls ls –G, 并重新登录 问:如何让FreeBSD的csh像bash那样按tab列出列出无法补齐的候选文件? 答:标准的方法是按Ctrl+D ...

  4. FreeBSD ipfw App配置Examples

    Step # 1: Enabling IPFW Open /etc/rc.conf file # vi /etc/rc.conf Append following settings: firewall ...

  5. Apache https 配置指南

    Windows Apache HTTPS配置创建下面3个目录: C:\Program Files\Apache Group\Apache2\conf\sslC:\Program Files\Apach ...

  6. Directadmin清空所有Tickets命令

    利用一条命令就快速实现了清空所有Tickets的方法,希望此例子对大家有帮助.     即可清空所有工单,包括系统提示 :> /usr/local/directadmin/data/admin/ ...

  7. minio 介绍

      minio 兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言. Minio可以做为云存储的解决方案用来保存海 ...

  8. 拾遗:Qemu/KVM

    WinXP: #!/bin/bash name=winxp qemu-system-x86_64 \ -enable-kvm \ -cpu host -smp ,sockets=,cores=,thr ...

  9. FREEBSD手工配置网络

    在FreeBSD系统中,网络能力十分重要,对于一个标准的FreeBSD系统,至少要有一个网络界面以便与其他计算机通信.最常见的网络界面为以太网卡.此外FreeBSD也支持Token Ring和FDDI ...

随机推荐

  1. ml机器学习笔记

    一.安装机器学习的包 1.conda create -n ml python=3.6 2.source activate ml 3.升级pip :pip install --upgrade pip 4 ...

  2. shell脚本中如何实现scp传输?

    示例脚本如下: #! /bin/sh expect -c " spawn scp -r /home/jello/jello.txt jello@110.110.110.110:/home/j ...

  3. c 语言中宏定义和定义全局变量的区别

    宏定义和定义全局变量的区别: 1 作用时间不同. 宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以. 2 本质类型不同. 宏定义的只是一段字符,在编译的时候被替换到引用的位置.在运行中是没有 ...

  4. 【做题】HDU6331 Walking Plan——矩阵&分块

    题意:给出一个有\(n\)个结点的有向图,边有边权.有\(q\)组询问,每次给出\(s,t,k\),问从\(s\)到\(t\)至少经过\(k\)条边的最短路. \(n \leq 50, \, q \l ...

  5. cat查看文件以及sed查看指定行数

    https://unix.stackexchange.com/questions/288521/with-the-linux-cat-command-how-do-i-show-only-certai ...

  6. 论文笔记之 SST: Single-Stream Temporal Action Proposals

    SST: Single-Stream Temporal Action Proposals 2017-06-11 14:28:00 本文提出一种 时间维度上的 proposal 方法,进行行为的识别.本 ...

  7. 原生js仿jquery一些常用方法

    原生js仿jquery一些常用方法 下面小编就为大家带来一篇原生js仿jquery一些常用方法(必看篇).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧   最近迷上了原 ...

  8. Python数据类型补充1

    一.可变和不可变类型 可变类型: 值变了,但是id没有变,证明没有生成新的值而是在改变原值,原值是可变类型 不可变类型:值变了,id也跟着变,证明是生成了新的值而不是在改变原值,原值是不可变 # x= ...

  9. 2-4、nginx特性及基础概念-nginx web服务配置详解

    Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...

  10. hdu 6041 I Curse Myself 无向图找环+优先队列

    I Curse Myself Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...