文档章节

使用FreeBSD来作为网关

通九互联科技
 通九互联科技
发布于 2015/05/23 09:25
字数 608
阅读 189
收藏 1

做网关服务器的机器必须要有两个网卡,用于一个连接外网,一个连接内网。

使用FreeBSD做网关,首先要开启pf防火墙,并配置FreeBSD为网关模式。

在rc.conf中我们需要添加如下配置

pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_program="/sbin/pfctl"
pf_flags=""
pflog_enable="NO"
pflog_logfile="/var/log/pflog"
pflog_program="/sbin/pflogd"
pflog_flags=""
pfsync_enable="NO"

gateway_enable="YES"

接着我们需要配置pf防火墙,其中我们假定em0是外网接口,em1是内网接口

在pf.conf中我们需要添加如下配置

lan_net = "192.168.20.0/24"
ext_if1="em0"
lan_if1="em1"
tcp_services = "{22}"
icmp_types = "echoreq"

set block-policy return
set skip on {lo0}

#NAT                                                                            
nat on $ext_if1 from {$lan_net } to any -> ($ext_if1)
#Transparent proxy
rdr pass inet proto tcp from $lan_net to any port 80 -> 127.0.0.1 port 3129

#Allow ssh
pass proto tcp to port $tcp_services  

#LAN use ICMP                                                                   
pass in quick on $lan_if1 proto icmp from $lan_net to any icmp-type $icmp_types

pass in  on $lan_if1 from $lan_if1:network to any keep state
pass out on $lan_if1 from any to $lan_if1:network keep state

#Allow all traffic out via external interface                                  
pass out on $ext_if1 proto tcp all modulate state flags S/SA
pass out on $ext_if1 proto { udp, icmp } all keep state

接着配置Squid使用pf来做透明代理。

squid.conf的配置如下

acl localnet src 10.0.0.0/8     # RFC1918 possible internal network             
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network             
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network  
acl SSL_ports port 443
acl Safe_ports port 80          # http                                          
acl Safe_ports port 21          # ftp                                           
acl Safe_ports port 443         # https                                         
acl Safe_ports port 70          # gopher                                        
acl Safe_ports port 210         # wais                                          
acl Safe_ports port 1025-65535  # unregistered ports                            
acl Safe_ports port 280         # http-mgmt                                     
acl Safe_ports port 488         # gss-http                                      
acl Safe_ports port 591         # filemaker                                     
acl Safe_ports port 777         # multiling http                                
acl CONNECT method CONNECT

http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports                                   
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost                                     
http_access allow localhost manager
http_access deny manager

http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy                               
http_access deny all

# Squid normally listens to port 3128                                           
http_port 3128
http_port 3129 transparent

cache_mem 512 MB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/squid/cache 10000 16 256

# Leave coredumps in the first cache dir                                        
coredump_dir /var/squid/cache

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
visible_hostname *******(替换为自己的主机名)

接着更新devfs.conf,改变pf句柄权限

own     pf      root:squid
perm    pf      0640

更新rc.conf,将squid加入启动

squid_enable="yes"

在/var/squid/cache/目录下执行squid -z来生成缓存目录。

如果需要在内网端使用DHCP,请参考以下配置

rc.conf

dhcpd_enable="yes"
dhcpd_ifaces="em1"

dhcp.conf

option domain-name-servers 8.8.8.8;
default-lease-time 600;
max-lease-time 7200;
authoritative;                    
log-facility local7;
ddns-update-style none;
subnet 192.168.20.0 netmask 255.255.255.0 {
       range 192.168.20.100 192.168.20.200;
       option routers 192.168.20.1;
       option subnet-mask 255.255.255.0;
}


© 著作权归作者所有

通九互联科技
粉丝 133
博文 37
码字总数 21775
作品 1
大连
个人站长
私信 提问
pfSense 2.4.4 发布,开源防火墙和路由器软件

pfSense 2.4.4 发布了,它是一个基于 FreeBSD,专为防火墙和路由器功能定制的开源版本。它被安装在计算机上作为网络中的防火墙和路由器存在,并以可靠性著称,且提供往往只存在于昂贵商业防火...

局长
2018/09/25
1K
0
FreeBSD 9.3-BETA1 发布

FreeBSD 9.3-BETA1 发布,这是 9.3 系列的第一个 beta 版本,现在已经将 amd64, i386, ia64, powerpc, powerpc64 和 sparc64 架构的版本提供在 FTP 服务器上。详细更新内容请看发行说明,镜像...

oschina
2014/06/03
1K
11
FreeBSD-9.3 BETA3 发布

FreeBSD-9.3 BETA3 发布,此版本现已提供I amd64, i386, ia64, powerpc, powerpc64 和 sparc64 架构的 ISO 镜像下载,在大部分FreeBSD 镜像网站都可以进行下载。更多内容请看发行说明。 Free...

oschina
2014/06/15
1K
8
BSD & 云聚会 @ 北京,请到FreeBSD设计与实现的作者之一

有吃,有喝,有大牛,赶快来报名哦!http://www.huodongxing.com/go/bsd_bj Meet other local geeks and discuss the BSD including FreeBSD, NetBSD, OpenBSD, MacOS X, DragonFlyBSD and a......

KylieLiang
2016/12/03
428
2
FreeBSD 10.1-BETA1 发布

FreeBSD 10.1-BETA1 发布,此版本已经提供在 FTP 服务器上,支持 amd64, armv6, i386, ia64, powerpc, powerpc64 和 sparc64 架构。 FreeBSD 10.0-BETA1 主要包括了内核改进,硬件支持改进,...

oschina
2014/09/15
2.2K
14

没有更多内容

加载失败,请刷新页面

加载更多

500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部