- 論壇徽章:
- 0
|
請教:Freebsd如何實(shí)現(xiàn)ADSL撥號?
利用FreeBSD用戶級的PPP做FreeBSD下的ADSL共享上網(wǎng),可以使用較低的設(shè)備配置,實(shí)現(xiàn)
局域網(wǎng)的穩(wěn)定的網(wǎng)絡(luò)鏈路共享。同時(shí)還可以增加Squid做上網(wǎng)的代理,進(jìn)一步增加局域網(wǎng)
上網(wǎng)的速度。
FreeBSD可以對PPP提供兩種不同方式的支持,一種是內(nèi)核級PPP,它將PPP協(xié)議代碼編譯
進(jìn)內(nèi)核,并運(yùn)行一個(gè)PPP守護(hù)進(jìn)程pppd,提供對PPP的支持,這是比較傳統(tǒng)的方法,但配
置比較困難。另一種為用戶級PPP,使用一個(gè)應(yīng)用程序PPP,通過通用tunnel設(shè)備傳遞PPP
數(shù)據(jù),配置較為容易。一般情況下可以使用用戶級的PPP來建立撥號方式的Internet連接。
準(zhǔn)備
安裝基本的FreeBSD環(huán)境,具體可以參照www.freebsdchina.org李冬的《FreeBSD服務(wù)器
指南》。必須安裝操作系統(tǒng)源代碼中的”sys”部分,下面需要重新編譯內(nèi)核以支持防火墻。
然后還需要確認(rèn)在/etc/ppp目錄中是否存在ppp.conf 或者ppp.conf.sample文件。
實(shí)例
Dell gx110 PIII 128M 10G 3com905B-tx 10/100Mbps自適應(yīng)PCI網(wǎng)絡(luò)適配器。
安裝設(shè)置
在 FreeBSD 下上網(wǎng)必須要有 tun 這個(gè)偽設(shè)備,所以必須在內(nèi)核中加入對 tun 的支持。
在 tun 后面的 1 指定同時(shí)可以使用的 tun 設(shè)備的個(gè)數(shù)。
要讓整個(gè)局域網(wǎng)上的用戶都可以訪問 Internet 您的機(jī)器必須有兩張網(wǎng)卡,一個(gè)連接
ADSL設(shè)備,一個(gè)連接局域網(wǎng)的HUB或者switch。另外必須重新編譯一次內(nèi)核。這些選項(xiàng)
主要是在內(nèi)核中加入對IP轉(zhuǎn)發(fā)的支持?蛻魴C(jī)將IP數(shù)據(jù)包發(fā)到FreeBSD,然后FreeBSD
就將這些數(shù)據(jù)包轉(zhuǎn)發(fā)到指定的地址。這就是讓 FreeBSD 帶動(dòng)整個(gè)局域網(wǎng)上網(wǎng)的基本原理。
實(shí)例
在內(nèi)核文件中添加如下內(nèi)容:
device tun 1 # 根據(jù)實(shí)踐發(fā)現(xiàn)此行內(nèi)容可以不加。
options IPFIREWALL # 打開防火墻選項(xiàng)
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE # 向系統(tǒng)的注冊程序發(fā)送注冊信息包
options IPFIREWALL_VERBOSE_LIMIT=100 # 限制一臺(tái)機(jī)器注冊的次數(shù)
options IPFIREWALL_DEFAULT_TO_ACCEPT # 使得缺省的規(guī)則允許所有形式的訪問
options IPDIVERT # 啟用由ipfw divert使用的轉(zhuǎn)向IP套接字
# 這一選項(xiàng)需要與natd聯(lián)合使用
要啟用ipfw,必須設(shè)置IPFIREWALL選項(xiàng),它將通知操作系統(tǒng)的內(nèi)核檢查每個(gè)IP數(shù)據(jù)包,
將它們與規(guī)則集進(jìn)行比較,通過添加IPFIREWALL_VERBOSE選項(xiàng)包括注冊支持是一個(gè)好主
意,還應(yīng)該通過添加IPFIREWALL_VERBOSE_LIMIT選項(xiàng)來限制內(nèi)核注冊的數(shù)據(jù)包的數(shù)量。
配置
還需要設(shè)置etc/ppp/ppp.conf文件
實(shí)例
/etc/ppp/ppp.conf
default:
set log Phase tun command #
set ifaddr 10.0.0.1/0 10.0.0.2/0 #設(shè)置本地PPP連接的IP地址
adsl : #配置代號
set device PPPoE: xl1 # 用你的網(wǎng)卡設(shè)備名稱替代xl1
set authname #你的ADSL登陸名稱
set authkey #你的賬號密碼
set dial
set login
add default HISADDR # 設(shè)置默認(rèn)路由為對方的地址
enable dns #從撥號服務(wù)器中獲得正確的DNS服務(wù)器地址
配置
最后,設(shè)置/etc/rc.conf文件打開gateway選項(xiàng)。
實(shí)例
編輯/etc/rc.conf 文件
加入:
gateway_enable="YES"
特別提示:如果要實(shí)際開機(jī)自動(dòng)撥號,還要增加以下內(nèi)容到 /etc/rc.conf 文件里!
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="adsl" # 所要撥號的配置代號
配置
在如上述配置完畢,網(wǎng)絡(luò)訪問會(huì)有問題,因?yàn)榉阑饓Φ哪J(rèn)配置是都不可訪問。下面需
要配置防火墻規(guī)則來允許訪問,和禁止訪問。
實(shí)例
首先用如下命令察看當(dāng)前的防火墻配置:
/sbin/ipfw –a show
然后執(zhí)行以下的命令進(jìn)行防火墻的設(shè)置:
/sbin/ipfw add 00400 divert natd ip from any to any via xl0 //用于啟動(dòng)Natd 服務(wù)
/sbin/ipfw add 00001 deny log ip from any to any ipopt rr
/sbin/ipfw add 00002 deny log ip from any to any ipopt ts
/sbin/ipfw add 00003 deny log ip from any to any ipopt ssrr
/sbin/ipfw add 00004 deny log ip from any to any ipopt lsrr
/sbin/ipfw add 00005 deny tcp from any to any in tcpflags syn,fin
/sbin/ipfw add 19997 check-state
/sbin/ipfw add 19998 allow tcp from any to any out keep-state setup
/sbin/ipfw add 19999 allow tcp from any to any out
/sbin/ipfw add 20001 allow udp from any 53 to me in recv xl0 //允許外網(wǎng)的DNS服務(wù)器的信息進(jìn)入改服務(wù)器
/sbin/ipfw add 29999 allow udp from any to any out //允許自己的UDP包往外發(fā),進(jìn)行DNS信息查詢
/sbin/ipfw add 30000 allow icmp from any to any icmptypes 3
/sbin/ipfw add 30001 allow icmp from any to any icmptypes 4
/sbin/ipfw add 30002 allow icmp from any to any icmptypes 8 out
/sbin/ipfw add 30003 allow icmp from any to any icmptypes 0 in
/sbin/ipfw add 30004 allow icmp from any to any icmptypes 11 in
/sbin/ipfw add 40000 allow all from 192.168.0.0/16 to any
/sbin/ipfw add 40001 allow all from any to 192.168.0.0/16
/sbin/ipfw flush //使防火墻規(guī)則生效
最后用/sbin/ipfw –a show 察看修改后的防火墻設(shè)置:
00001 0 0 deny log logamount 100 ip from any to any ipopt rr
00002 0 0 deny log logamount 100 ip from any to any ipopt ts
00003 0 0 deny log logamount 100 ip from any to any ipopt ssrr
00004 0 0 deny log logamount 100 ip from any to any ipopt lsrr
00005 0 0 deny tcp from any to any in tcpflags fin,syn
00100 516 68656 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00400 0 0 divert 8668 ip from any to any via xl0
19997 0 0 check-state
19998 368990 279745596 allow tcp from any to any keep-state out setup
19999 872 154180 allow tcp from any to any out
20001 0 0 allow udp from any 53 to me in recv xl0
29999 3758 444913 allow udp from any to any out
30000 145 9690 allow icmp from any to any icmptype 3
30001 0 0 allow icmp from any to any icmptype 4
30002 0 0 allow icmp from any to any out icmptype 8
30003 0 0 allow icmp from any to any in icmptype 0
30004 0 0 allow icmp from any to any in icmptype 11
40000 7572 714836 allow ip from 192.168.0.0/16 to any
65535 3213 496794 allow ip from any to any
成功配置文檔模板
rc.conf:
hostname="sample.com"
ifconfig_xl1="inet 192.168.9.6 netmask 255.255.255.0"
kern_securelevel_enable="NO"
nfs_reserved_port_only="NO"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="/etc/ipfw.conf"
firewall_quiet="YES"
firewall_logging_enable="YES"
sendmail_enable="NO"
sshd_enable="YES"
usbd_enable="NO"
gateway_enable="YES"
natd_interface="xl0"
natd_enable="YES"
natd_flags="-config /etc/natd.conf"
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="adsl"
/etc/ppp/ppp.conf:
default:
set log Phase tun command
set ifaddr 10.0.0.1/0 10.0.0.2/0
adsl:
set device PPPoE l0
set mru 1492
set mtu 1492
set authname ad50103024
set authkey Sstc1602
set dial
set login
add default HISADDR
參考資料:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/pppoe.html |
|