FreeBSD 内核默认不支持NAT转发功能, 需要重新编译内核源码添加ipfw NAT 选项。
1. 下载FreeBSD内核源码。 下载地址:http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases (包含FreeBSD5.0---FreeBSD10.0)
https://www.freebsd.org/where.html(FreeBSD10.1---FreeBSD10.3)
2. 下载好内核源码后,使用命令 tar -xvf src.txz -C / 解压到/usr/src目录下。
3. 编辑内核配置文件 GENERIC:
cd /usr/src/sys/amd64/conf (sys目录下有i386, amd64...等目录, 编译内核时注意选择相同系统类型, 可以用uname -a 查看)
vi GENERIC
在文件末尾添加 配置选项
options IPFIREWALL // 添加ipfw
options IPFIREWALL_DEFAULT_TO_ACCEPT // 默认所有规则都允许通过
options IPDIVERT // 启用 NAT 功能
编译:
/usr/sbin/config GENERIC
cd ../compile/GENERIC
make cleandepend // 清除关联
make depede
make
make install
如果编译没有问题,则内核编译成功, 然后重启系统, 重启成功后,uname -a 查看内核信息, 如下图。
4. 添加两块虚拟网卡, em0, em1. 其中em0 连接外网, em1连接内网 且内网不能上网。
修改配置文件 rc.local, 添加网卡信息
hostname="bsd.vohyo.com"
ifconfig_em0="inet 192.168.241.175 netmask 255.255.255.0"
defaultrouter="192.168.241.2"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
ifconfig_em1="inet 192.168.135.175 netmask 255.255.255.0"
# 添加ipfw nat等配置信息
# 开启SSH功能
sshd_enable="YES"
保存退出, 输入命令 /etc/netstart 使更改生效
配置内网客户机, 其中客户机的网关配置为FreeBSD的内网em1 IP, 客户机可以直接联网。
自测FreeBSD9.2, FreeBSD10.1 系统, 配置完成后, 联网无问题。