歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> BSD >> FreeBSD下ADSL共享上網

FreeBSD下ADSL共享上網

日期:2017/2/28 11:23:09   编辑:BSD


概述
利用FreeBSD用戶級的PPP做FreeBSD下的ADSL共享上網,可以使用較低的設備配置,實現
局域網的穩定的網絡鏈路共享。同時還可以增加Squid做上網的代理,進一步增加局域網
上網的速度。
FreeBSD可以對PPP提供兩種不同方式的支持,一種是內核級PPP,它將PPP協議代碼編譯
進內核,並運行一個PPP守護進程pppd,提供對PPP的支持,這是比較傳統的方法,但配
置比較困難。另一種為用戶級PPP,使用一個應用程序PPP,通過通用tunnel設備傳遞PPP
數據,配置較為容易。一般情況下可以使用用戶級的PPP來建立撥號方式的Internet連接。
准備
指南》。必須安裝操作系統源代碼中的”sys”部分,下面需要重新編譯內核以支持防火牆。
實例
Dell gx110 PIII 128M 10G 3com905B-tx 10/100Mbps自適應PCI網絡適配器。
安裝設置
在 FreeBSD 下上網必須要有 tun 這個偽設備,所以必須在內核中加入對 tun 的支持。
在 tun 後面的 1 指定同時可以使用的 tun 設備的個數。
要讓整個局域網上的用戶都可以訪問 Internet 您的機器必須有兩張網卡,一個連接
ADSL設備,一個連接局域網的HUB或者switch。另外必須重新編譯一次內核。這些選項
主要是在內核中加入對IP轉發的支持。客戶機將IP數據包發到FreeBSD,然後FreeBSD
就將這些數據包轉發到指定的地址。這就是讓 FreeBSD 帶動整個局域網上網的基本原理。
實例
在內核文件中添加如下內容:
device tun 1 # 根據實踐發現此行內容可以不加。
options IPFIREWALL # 打開防火牆選項
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE # 向系統的注冊程序發送注冊信息包
options IPFIREWALL_VERBOSE_LIMIT=100 # 限制一台機器注冊的次數
options IPFIREWALL_DEFAULT_TO_ACCEPT # 使得缺省的規則允許所有形式的訪問
options IPDIVERT # 啟用由ipfw divert使用的轉向IP套接字
# 這一選項需要與natd聯合使用
要啟用ipfw,必須設置IPFIREWALL選項,它將通知操作系統的內核檢查每個IP數據包,
將它們與規則集進行比較,通過添加IPFIREWALL_VERBOSE選項包括注冊支持是一個好主
意,還應該通過添加IPFIREWALL_VERBOSE_LIMIT選項來限制內核注冊的數據包的數量。
配置
實例
default:
set log Phase tun command #
set ifaddr 10.0.0.1/0 10.0.0.2/0 #設置本地PPP連接的IP地址
adsl : #配置代號
set device PPPoE: xl1 # 用你的網卡設備名稱替代xl1
set authname #你的ADSL登陸名稱
set authkey #你的賬號密碼
set dial
set login
add default HISADDR # 設置默認路由為對方的地址
enable dns #從撥號服務器中獲得正確的DNS服務器地址
配置
實例
加入:
gateway_enable="YES"
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="adsl" # 所要撥號的配置代號
配置
在如上述配置完畢,網絡訪問會有問題,因為防火牆的默認配置是都不可訪問。下面需
要配置防火牆規則來允許訪問,和禁止訪問。
實例
首先用如下命令察看當前的防火牆配置:
/sbin/ipfw –a show
然後執行以下的命令進行防火牆的設置:
/sbin/ipfw add 00400 divert natd ip from any to any via xl0 //用於啟動Natd 服務
/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 //允許外網的DNS服務器的信息進入改服務器
/sbin/ipfw add 29999 allow udp from any to any out //允許自己的UDP包往外發,進行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 //使防火牆規則生效
最後用/sbin/ipfw –a show 察看修改後的防火牆設置:
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
成功配置文檔模板
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_quiet="YES"
firewall_logging_enable="YES"
sendmail_enable="NO"
sshd_enable="YES"
usbd_enable="NO"
gateway_enable="YES"
natd_interface="xl0"
natd_enable="YES"
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="adsl"
default:
set log Phase tun command
set ifaddr 10.0.0.1/0 10.0.0.2/0
adsl:
set device PPPoE:xl0
set mru 1492
set mtu 1492
set authname ad50103024
set authkey Sstc1602
set dial
set login
add default HISADDR
以上這樣的代碼不行的,要注意每個區域下面的設置前面都需要加一個空格,我就是被這個耽誤了不少時間,所以應該修改成一下這個樣子
default:
Xset log Phase tun command
Xset ifaddr 10.0.0.1/0 10.0.0.2/0
adsl:
Xset device PPPoE:xl0
Xset mru 1492
Xset mtu 1492
Xset authname ad50103024
Xset authkey Sstc1602
Xset dial
Xset login
Xadd default HISADDR
大家把X替換成空格。
Copyright © Linux教程網 All Rights Reserved