图解pfSense软路由系统的使用(NAT功能)

http://seanlook.com/2015/04/23/pfsense-usage/
 发表于 2015-04-23 |  更新于: 2015-04-24 |  分类于 Linux|  |  阅读次数: 2494

pfsense是一款开源的路由和防火墙产品,它基于freebsd系统定制和开发。pfsene拥有友好的web的配置界面,且具有伸缩性强又不失强大性能,在众多开源网络防火墙中属于佼佼者。

2004年,pfsense作为m0n0wall项目(基于freebsd内核的嵌入式软防火墙)的分支项目启动,增加了许多m0n0wall没有的功能(pfSense的官方网站称它为the better m0n0wall).pfSense除了包含宽带路由器的基本功能外,还有以下的特点:

  • 基于稳定可靠的FreeBSD操作系统,能适应全天候运行的要求
  • 具有用户认证功能,使用Web网页的认证方式,配合RADIUS可以实现记费功能
  • 完善的防火墙、流量控制和数据包功能,保证了网络的安全,稳定和高速运行
  • 支持多条WAN线路和负载均衡功能,可大幅度提高网络出口带宽,在带宽拥塞时自动分配负载
  • 内置了IPsec 和PPTP VPN功能,实现不同分支机构的远程互联或远程用户安全地访问内部网
  • 支持802.1Q VLAN标准,可以通过软件模拟的方式使得普通网卡能识别802.1Q的标记,同时为多个VLAN的用户提供服务
  • 支持使用额外的软件包来扩展pfSense功能,为用户提供更多的功能(如FTP和透明代理).
  • 详细的日志功能,方便用户对网络出现的事件分析,统计和处理
  • 使用Web管理界面进行配置(支持SSL),支持远程管理和软件版本自动在线升级

本文简单介绍pfSense的安装及配置过程,完成一个基本的路由器该有的功能,如访问局外网、设置防火墙规则、配置端口映射。这里演示在ESXi虚拟服务器上,解决IP不足的问题。

创建虚拟机

首先去 https://www.pfsense.org/download/ 下载稳定版本的pfSense,如pfSense-LiveCD-2.2.2-RELEASE-amd64.iso.gz(网上看到有人提到这个版本不稳定,我在使用中偶尔也发现突然很慢,建议2.1.5)。在vSphere上创建虚拟机的过程省略,取名01_pfSense,创建虚拟机操作系统时选择“其他 -> FreeBSD 64位”,单CPU,512Mb内存,4G硬盘。将下载的系统解压成iso后挂载到CD/DVD,并“打开电源时连接”。
下图是网卡情况:
为pfSense分配两个网卡,分别是可以连接公司内网的172.29.88.1/24网段的vSphere_Admin端口组,和IP范围是172.30.31.1/24的内部局域网端口组VM Local。

记录下Mac地址
外网接口:00:0c:29:36:b6:c2
内网接口:00:0c:29:36:b6:cc

安装pfsense

启动电源后出现欢迎界面,选择1.Boot pfSense [default],或等待几秒钟自动选择,进入如下界面:

输入I,回车,然后是一个蓝屏,开始安装。

也可以什么都不用管,系统会一直启动从CD启动得到一个完整的pfSense系统,因为没有安装所以在屏幕下方会有一个选项99) Install pfSense to a hard drive, etc.,输入99同样会进入下面的安装操作系统的过程。

一路保存默认:< Accept these Settings > → < Quick/Easy InStall > → erase all content < OK > → < Standard Kernel > → < Reboot >

重启后安装完成,断开CD介质。

详见见官网文档 https://doc.pfsense.org/index.php/Installing_pfSense 。

下面开始配置内外网接口。

分配接口

从上图可以看到系统默认将em0接口当做WAN(外网),em1当做LAN(内部局域网),但我们不确定em0就是在创建虚拟机时分配的外网接口,需要根据MAC地址判断。

选择1) Assgin Interfaces,回车
首先询问你是否设置VLAN(用于划分多个子局域网网),Do you want to set up VLANs now [y|n]?,否n:

分配IP

选择2) Set interfce(s) IP address

先配置WAN的IP,禁用DHCP,配置地址172.29.88.230/24,网关172.29.88.1,禁用IPV6:

再配置LAN,172.30.31.1/24,不配置网关:

完成后会提示可以在浏览器打开http://172.30.31.1/,通过webConfigurator来操作pfSense。

已打通两端网络:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
sean@seanubt:~$ ssh admin@172.30.31.1 22
Password for admin@pfSense.domain:
*** Welcome to pfSense 2.2.2-RELEASE-pfSense (amd64) on pfSense *** WAN (wan) -> em0 -> v4: 172.29.88.230/24
LAN (lan) -> em1 -> v4: 172.30.31.1/24
0) Logout (SSH only) 9) pfTop
1) Assign Interfaces 10) Filter Logs
2) Set interface(s) IP address 11) Restart webConfigurator
3) Reset webConfigurator password 12) pfSense Developer Shell
4) Reset to factory defaults 13) Upgrade from console
5) Reboot system 14) Disable Secure Shell (sshd)
6) Halt system 15) Restore recent configuration
7) Ping host 16) Restart PHP-FPM
8) Shell 7 Enter a host name or IP address: 172.29.88.56 PING 172.29.88.56 (172.29.88.56): 56 data bytes
64 bytes from 172.29.88.56: icmp_seq=0 ttl=64 time=1.406 ms
64 bytes from 172.29.88.56: icmp_seq=1 ttl=64 time=1.215 ms
64 bytes from 172.29.88.56: icmp_seq=2 ttl=64 time=0.480 ms --- 172.29.88.56 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.480/1.034/1.406/0.399 ms Press ENTER to continue. *** Welcome to pfSense 2.2.2-RELEASE-pfSense (amd64) on pfSense *** WAN (wan) -> em0 -> v4: 172.29.88.230/24
LAN (lan) -> em1 -> v4: 172.30.31.1/24
0) Logout (SSH only) 9) pfTop
1) Assign Interfaces 10) Filter Logs
2) Set interface(s) IP address 11) Restart webConfigurator
3) Reset webConfigurator password 12) pfSense Developer Shell
4) Reset to factory defaults 13) Upgrade from console
5) Reboot system 14) Disable Secure Shell (sshd)
6) Halt system 15) Restore recent configuration
7) Ping host 16) Restart PHP-FPM
8) Shell 8 ping 172.30.31.20
PING 172.30.31.20 (172.30.31.20): 56 data bytes
64 bytes from 172.30.31.20: icmp_seq=0 ttl=64 time=0.239 ms
64 bytes from 172.30.31.20: icmp_seq=1 ttl=64 time=0.211 ms

登录

172.30.31.1是内部局域网的IP,所以只能通过另一台lan上的服务器的浏览器访问:

当然这样操作起来很不方便,,而且假如lan上的其它服务器都是linux而且没有图像界面,没办法使用webConfigurator了。端口转发似乎是一个比较好的方案:在某一台lan服务器上添加一个可以通过你的pc端访问的网卡(我这里的172.29.88.206,它的lan接口IP为172.30.31.20),然后使用rinetd工具转发到172.30.31.1。
这个方法似乎可选,但需要额外的设置:

An HTTP_REFERER was detected other than what is defined in System -> Advanced (http://172.29.88.206:8008/index.php?logout). You can disable this check if needed in System -> Advanced -> Admin.

pfSense为了安全起见,不允许任何形式的转发来访问webConfigurator,根据你的需要决定是否关闭这个功能:System -> Advanced -> Admin,勾选Browser HTTP_REFERER enforcement -> Save -> Apply。

登陆的用户名默认为admin/pfsense

使用配置向导

前面是通过命令行的方法对接口和IP进行配置,也可以直接通过webGUI向导对WAN和LAN、网关等设置:System -> Setup Wizard,因为太过简单,就不贴图了。
在设置WAN接口时(Configure WAN Interface)注意两点:

  • Static IP Configuration 部分设置正确的IP和网关,否则会无法进出网络
  • RFC1918 Networks 默认是勾选的,这是为了避免WAN上也存在与LAN一样的网段。如果要允许wan的其他主机ping通该pfSense,则去掉勾

其它保持为空或默认值。

pfSense的NAT功能

即Port Forward,目的是为了WAN上的其他机器可以访问LAN内部的服务。
Friewall -> NAT

端口映射分为单端口和范围端口。但端口容易理解,访问WAN 172.29.88.230:8000 的 数据包都转发到内部LAN 172.30.31.20:8000;范围端口是在 from m to n 的端口范围内的数据包都发送到内部IP的对应端口上,减少规则的数量。

Save -> Apply Changes,与此同时pfSense会自动在防火墙里添加规则,Firewal -> Rules

pfSense做负载均衡

其它功能

pfSense还有几大重要的功能,如快速搭建VPN服务器,作为前端负载均衡服务器,流量限制。由于工作中暂未用到,所以就不加说明了。

关于负载均衡见 http://seanlook.com/2015/04/24/pfsense-loadbalancer/

参考

[转帖]pfSense软路由系统的使用的更多相关文章

  1. VyOS软路由系统基本设置

    1. VyOS简介 VyOS是一个开源的网络操作系统,可以安装在物理硬件上,也可以安装在你自己的虚拟机上,或者是一个云平台上.它基于GNU/Linux,并加入了多个应用程序,如:Quagga, ISC ...

  2. pfSense软路由防火墙

    才刚刚架起来,等着入门呀.. 想作网络的QOS限流这些的...

  3. 攻防组网之—-MikroTik软路由的配置和FUZZ

    作者:红发香克斯 开篇之前一直想借助一台高性能PC利用VMWare组建一个攻防网络,之前有一贴写过找到了一个软路由系统,就是可以在VMWare中使用的路由器操作系统,那个系统还挺常用,上次帖子写到了安 ...

  4. x86主机搭建家庭智能路由系统 ---- 设计篇

    组件简介 Proxmox: 基于Debian的虚拟化系统,支持OpenVZ和KVM. pfSense: 基于FreeBSD的开源路由系统. FreeNAS: 开源NAS系统. shadowsocks: ...

  5. 吐血原创:mini2440和win7笔记本利用无路由功能的交换机共享上网(使用x-router软路由)

    真的是要吐血了,为了使自己的win7系统笔记本和mini2440,通过交换机(没有路由功能,才5口,和HUB差不多)共享宽带上网,并且连接上的宽带还是长城宽带,我用尽各种cmd命令都查不到长城宽带的默 ...

  6. 海蜘蛛网络科技官方网站 :: 做最好的中文软路由 :: 软件路由器 :: 软路由 :: 软件路由 :: RouterOs

    海蜘蛛网络科技官方网站 :: 做最好的中文软路由 :: 软件路由器 :: 软路由 :: 软件路由 :: RouterOs 企业简介 武汉海蜘蛛网络科技有限公司成立于2005年,是一家专注于网络新技术研 ...

  7. x86主机搭建家庭智能路由系统 ---- Proxmox虚拟化实现一机多用

    Proxmox VE简介 Proxmox VE(Proxmox Virtual Environment) 是一款完全开源虚拟化管理平台,可以管理QEMU/KVM虚拟机和LXC容器.事实上它只是一个前端 ...

  8. RouterOS 5.16软路由安装图解教程

    说明:RouterOS是一种路由器操作系统,它可以安装到普通的个人电脑上面,替代硬件路由器 RouterOS版本:RouterOS 5.16 硬件要求: 1.支持多核CPU 2.内存最大支持到2G 3 ...

  9. K8S集群搭建之软路由的安装

    一.系统要求 ①镜像:win10 ②1C.4G.20G即可 ③仅主机模式(共享网卡上网) ④老毛桃PE ⑤ip为192.168.66网段(因为我设置的其他K8S节点也为该网段)---koolshare ...

随机推荐

  1. 【Teradata】 TPT基础知识

     1.TPT Description Teradata Parallel Transporter (TPT) is client software that performs data extract ...

  2. 【SDOI2014】向量集

    [SDOI2014]向量集 题目描述 我们分析一波: 假设我们询问\((A,B)\),\(x_i>x_j\)若 \[ A\cdot x_i+B\cdot y_i>A\cdot x_j+B\ ...

  3. 微信小程序接入,https服务器搭建和调试

    在进行小程序开发时候,调试时候,希望在本地搭建一个https环境. 准备条件: 1.公网主机(阿里云或者腾讯云主机) 2外网访问工具natapp 步骤: 1.在主机上安装nginx(nginx转发到n ...

  4. 003_生成器(generator)内部解析

    #http://kb.cnblogs.com/page/87128/(未看完)

  5. Java正则表达式初探(一)

    好多同学们总是听别人说起正则表达式这个东西,也有很多用接触到实际使用过.但是相信有很大一部分人是在用的时候采取网站上搜索,拿一个一知半解的别人写的例子过来,简单测试下功能可用,就OK了.正则表达式那晦 ...

  6. IDEA+Maven+Tomcat构建项目流程

    0.准备 本文主要解决在IDEA上开发Maven-webapp项目关联Tomcat的问题. 首先,确保本地计算机下载解压了Tomcat压缩包,以及配置好了Java环境. 1.新建Mavne项目 2.I ...

  7. Spring Boot 2.0(八):Spring Boot 集成 Memcached

    Memcached 介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站 ...

  8. node express 静态资源

    实例代码 const express = require('express') const path = require('path') const app = express() app.use(e ...

  9. kafka环境搭建和使用(python API)

    引言 上一篇文章了解了kafka的重要组件zookeeper,用来保存broker.consumer等相关信息,做到平滑扩展.这篇文章就实际操作部署下kafka,用几个简单的例子加深对kafka的理解 ...

  10. gulp + gulp-better-rollup + rollup 构建 ES6 开发环境

    gulp + gulp-better-rollup + rollup 构建 ES6 开发环境 关于 Gulp 就不过多啰嗦了.常用的 js 模块打包工具主要有 webpack.rollup 和 bro ...