分享
 
 
 

用FreeBSD建立拨号网关

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

家庭网络结构如下:

W2K(192.168.0.100)

-----以太网-----

FreeBSD(192.168.0.200)

-----PPP拨号-----

internet

实现要求如下:

在FreeBSD主机上使用调制解调器拨号上网,并对局域网内其它计算机提供该拨号连接的共享。

在FreeBSD主机上设置缓冲型的DNS系统以避免对域名的重复查询,减轻网络流量。

在FreeBSD主机上设置Squid软件对局域网提供http代理服务并配置ipfw防止用户绕过代理服务器。

在FreeBSD主机上使用Fetchmail及Qpopper为局域网用户代收外部电子邮件。

安装PPP

众所周知,在FreeBSD下有两种类型的PPP,在这里为简单起见使用用户级PPP(User-PPP),因为

内核级PPP(Kernel-PPP)需要更多设定配置方面的工作。

当然在开始之前弄清设备所用的硬件资源可使工作事半功倍。为此,需要了解以下内容:

调制解调器所用端口及速率(我假设为所用端口为串口1、速率为115200)

上网的账号及口令

ISP分配的静态IP地址(如为动态分配则无须知道)

现在要根据这些资料来配置并编译新的内核以支持用户级PPP和防火墙功能,在内核配置文件中加入以下内容:

options

IPFIREWALL

#防火墙功能

options

IPDIVERT

#转移套接字(支持NAT)

#

串(COM)口

device

sio0

at

isa?

port

"IO_COM1"

flags

0x10

tty

irq

4

#

伪设备

-

数字说明分配之单元数

pseudo-device

tun

1

#

分组隧道

编译完新内核后,就可以根据需要修改/etc/ppp/ppp.conf文件了(相应的防火墙功能稍后配置),该文件的样本如下:

default:

set

device

/dev/cuaa0

set

log

Phase

Chat

LCP

IPCP

CCP

tun

command

set

speed

115200

set

dial

"ABORT

BUSY

ABORT

NO\\sCARRIER

TIMEOUT

5

\"\"

AT

OK-AT-OK

ATE1Q0

OK

\\dATDT\T

TIMEOUT

40

CONNECT"

set

timeout

120

set

ifaddr

10.0.0.1/0

10.0.0.2/0

255.255.255.0

0.0.0.0

add

default

HISADDR

enable

dns

nat

enable

yes

163:

set

phone

163

set

authname

163

set

authkey

163

在此样本文件中,set

device说明使用的端口,在此我用了串口1;set

speed说明设备使用的速率,我用的是115200;set

ifaddr说明PPP连接所用的IP地址,第一个地址为本地地址及网络掩码,而第二个地址为ISP处的拨号服务器地址及掩码。如果使用ISP动态分配的地址,就可以象我这样用掩码为0的地址,它说明可以接受任何地址。否则请指定您的ISP分配的静态地址。

nat

enable

yes说明该PPP拨号连接可以让局域网络内的其它计算机共享。它使用NAT技术将网络内有连接请求的主机本身的本地IP转换为PPP连接所用的IP,从而可以访问外部互联网。

适当修改后可以用ppp命令来进行拨号测试了:

#ppp

ppp

dial

163

PPP

当提示符由小写变为大写时说明已经拨号成功了,这时可以ping一下ISP处的DNS服务器地址,看是否能通。另外还可以用netstat命令检查网络状态:

#

netstat

-nr

Routing

tables

Internet:

Destination

Gateway

Flags

Refs

Use

Netif

Expire

127.0.0.1

127.0.0.1

UH

10

389

lo0

192.168

link#1

UC

0

0

ed0

192.100.53.23

202.102.141.141

UH

1

0

tun0

192.168.0.100

52:54:4c:19:6d:d

UHLW

2

3968

ed0

1198

要挂断退出可以在提示符下打quit命令,当然还可以用killall

-INT ppp来中止当前的连接,否则如果空闲120秒就会自动挂断了(可以用settimeout参数进行调整)。这样,简单的PPP拨号连接配置就完成了。要更多的了解配置PPP方面的内容,可以参考Setting

up

User

PPP(FreeBSD手册中关于用户级PPP的设定细节)。

使FreeBSD成为拨号网关

前面提到在/etc/ppp/ppp.conf中使用nat

enable yes可以让网络内其它主机共享此PPP拨号连接,当然要达到这样效果,还必须让FreeBSD成为网关以允许转发IP数据包,所以在/etc/rc.conf文件中加入:

gateway_enable=YES

然后重新启动系统使其生效,当然,如果不想重启,可以用以下命令:

sysctl

-w

net.inet.ip.forwarding=1

注意:PPP拨号会修改路由表,为使路由稳定,系统不能启动动态路由守护程序,如routed或 gated,因为它们会动态修改路由表。

设置缓冲型DNS

为了对网内计算机查询域名进行缓冲,首先修改/etc/resolv.conf,因为PPP的enable dns参数会为系统设定从ISP处获得的域名服务器,要使系统优先使用本地域名服务器才能发挥缓冲型DNS的特性,这时可以把其它服务器作为后备:

domain

meaculpa.net

nameserver

127.0.0.1

nameserver

202.102.14.141

nameserver

202.102.15.162

以上添加127.0.0.1作为首域名服务器。然后用/etc/namedb/make-localhost产生适合本机的localhost.rev文件。注意,make-localhost脚本属性为644,需以root身份将其改为744才能运行。

接着修改/etc/namedb/named.conf,以使BIND运行为缓冲方式,样本如下:

options

{

directory

"/etc/namedb";

forward

only;

forwarders

{

202.102.14.141;

};

};

zone

"."

{

type

hint;

file

"named.root";

};

zone

"0.0.127.IN-ADDR.ARPA"

{

type

master;

file

"localhost.rev";

};

如使用BIND4则修改named.boot,样本如下:

directory

/etc/namedb

primary

0.0.127.IN-ADDR.ARPA

localhost.rev

cache

.

named.ca

forwarders

202.102.14.141

options

forward-only

最后就可以向/etc/rc.conf文件加入以下行使域名服务启动:

named_enable="YES"

这样重启后就拥有一个缓冲型的DNS系统了,这时可以设置局域网内其它计算机的TCP/IP属性,将DNS服务器指向该系统以利用其特性。

安装Squid

为了改善慢速的拨号连接并阻塞内部计算机直接访问外部网站,可以安装一套代理/缓冲系统并添加一定的防火墙规则。

在FreeBSD上我用了Squid这套软件,当然可以有两种安装方法,一是用现成的tgz包,打pkg_add命令就可以方便地装好了;另外就是到http://squid.nlanr.net/下载合适的版本(这里用了squid21)到FreeBSD的ports目录里自己编译安装,如:

cd

/usr/ports/www/squid21;make

install

建立Cache系统

接下来首先需要建立Cache目录。缺省会使用100M的磁盘空间,建议专门分一个区给它使用,如/cache。如果您想调整此Cache目录的大小,可以适当修改/usr/local/etc/squid/squid.conf文件。

在完成对其配置文件的修改后进行首次运行时,必须以root身份建立Cache目录:

#

/usr/local/sbin/squid

-z

如果得到“Permission

denied”的出错信息,如:

09:09:29|

Creating

Swap

Directories

FATAL:

Failed

to

make

swap

directory

/usr/local/squid/cache/00:

(13)

Permission

denied

Squid

Cache

(Version

2.1):Terminated

abnormally.

CPU

Usage:

0.022

seconds

Maximum

Resident

Size:

1000

KB

Page

faults

with

physical

i/o:

0

则可能是以下原因之一:

磁盘上没有空间了。

(对此我无能为力)

没有建立/usr/local/squid/logs/目录。

(手工建一个嘛)

您的/usr/local/squid/logs/cache.log文件属于root。

(可以用这条命令“chown

nobody.nogroup

/usr/local/squid/logs/cache.log”改一下,另外../log和../cache目录里的

所有文件都要有此属性。)

于是我查了一下这些目录中的文件,的确都属于root,所以我用了这两条命令:

#

chown

nobody.nogroup

/usr/local/squid/logs

#

chown

nobody.nogroup

/usr/local/squid/cache

然后再试一下建立Cache目录:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有