構(gòu)建簡(jiǎn)易家用路由器

構(gòu)建簡(jiǎn)易家用路由器

構(gòu)建環(huán)境:

系統(tǒng):Ubuntu 14.04

網(wǎng)卡:兩張有線網(wǎng)卡,TL-WN821N

路由器硬件結(jié)構(gòu):

如圖:? ?

上圖所示,我們常用的家用路由器由三部分組成,包括左下角的交換芯片組,右下角的WIFI芯片和上方的CPU。一般路由器會(huì)有5個(gè)接口,這5個(gè)接口最終會(huì)通過交換芯片匯聚成一路觸發(fā)CPU中斷。由于交換芯片是可編程的,可以將WAN口單獨(dú)劃入一個(gè)VLAN,這樣可以將WAN和LAN區(qū)分開。而WIFI芯片則通過br0與LAN橋接在一起。

我們準(zhǔn)備兩張有線網(wǎng)卡和一張無線網(wǎng)卡。我們可以用一張有線網(wǎng)卡模擬圖中的WAN口,一張網(wǎng)卡模擬lan口,TL-WN821模擬WIFI芯片。

設(shè)置無線接口為AP模式:

1、安裝hostapd ?apt-get install hostapd

2、nmcli nm wifi off ?#改變NetworkManager里的狀態(tài),關(guān)閉wifi,同時(shí)軟鎖定

3、rfkill unblock wlan #啟用wifi設(shè)備,不同于網(wǎng)絡(luò)狀態(tài)中的啟用wifi(后者改變NetworkManager里的狀態(tài))

完成上面3步后,ifconfig 查看無線接口假設(shè)為wlan1

橋接LAN和無線接口:

1、下載brctl源碼包:http://www.linuxfromscratch.org/blfs/view/svn/basicnet/bridge-utils.html

autoconf

./configure

make

make install

2、新建橋接口brctl braddr br0 ; ifconfig br0 up

3、橋接無線接口到br0,并激活無線配置,添加配置無線配置文件/etc/hostapd/wpa2.conf,內(nèi)容如下

interface=wlan1//接口名字

bridge=br0

driver=nl80211

ssid=my_router_test//ssid

hw_mode=g //模式

channel=11 //頻道

wpa=2

wpa_passphrase=12345678//密碼

wpa_key_mgmt=WPA-PSK

wpa_pairwise=CCMP

啟動(dòng)無線配置

hostapd -B /etc/hostapd/wpa2.conf

4、查看橋接口brctl show 發(fā)現(xiàn)wan1 已經(jīng)在br0下面了。

5、假如如還用其他有線網(wǎng)卡,如eth1,可以通過brctl addif br0 eth1 將eth1加入br0橋

路由器軟件結(jié)構(gòu)


如圖上圖所示,web server一般用于用戶頁(yè)面配置參數(shù)使用,web server通過CGI調(diào)用flash set命令工具將參數(shù)保存到flash,隨后CGI啟動(dòng)初始化腳本,腳本將所需參數(shù)通過flash get讀取出來,并用讀取的參數(shù)重啟各個(gè)應(yīng)用。

配置DHCP服務(wù)器(用于給連接路由器的設(shè)備分配IP)

這里用的是isc-dhcp-server,你也可以使用其它的dhcp服務(wù)器程序

1、安裝isc-dhcp-server,sudo?apt-get?install?isc-dhcp-server

2、修改dhcp server所綁定的接口,修改/etc/default/isc-dhcp-server文件的”INTERFACES”字段改為br0。

3、修改/etc/dhcp/dhcpd.conf文件,修改分配的DNS地址option?domain-name-servers后面改為8.8.8.8,?114.114.114.114

配置DHCP地址池,在文件尾部添加

subnet 192.168.1.0 netmask 255.255.255.0 {

range dynamic-bootp 192.168.1.2 192.168.1.100;

option broadcast-address 192.168.1.255;

option routers 192.168.1.1;

}

4、重啟接口ifconfigbr0?192.168.1.1?netmask?255.255.255.0?up

5、重啟DHCP服務(wù)器/etc/init.d/isc-dhcp-server?restart

IPtables


Iptables主要作用是用于攔截,修改,標(biāo)記數(shù)據(jù)包。

iptables默認(rèn)有5 條鏈,他們對(duì)應(yīng)處理數(shù)據(jù)包的5個(gè)掛在點(diǎn)。5個(gè)掛載點(diǎn)的位置如圖所示:

PREROUTING:數(shù)據(jù)包進(jìn)入路由表之前

INPUT:通過路由表后目的地為本機(jī)

FORWARD:通過路由表后,目的地不為本機(jī)

OUTPUT:由本機(jī)產(chǎn)生,向外轉(zhuǎn)發(fā)

POSTROUTIONG:發(fā)送到網(wǎng)卡接口之前

iptables另外還有3個(gè)做特定處理的表。

mangle?表用于標(biāo)記數(shù)據(jù)包

nat用于轉(zhuǎn)換地址

filter用戶過濾數(shù)據(jù)包

Iptables鏈與表的關(guān)系如圖:


如上圖所示PREROUTING和POSTROUTING是不能進(jìn)行過濾操作的,且各個(gè)表在鏈中的處理順序是mangle > nat > filter

NAT:

為了成功的與公網(wǎng)進(jìn)行通信,我們需要把我們的私有地址轉(zhuǎn)換成我們唯一的公網(wǎng)地址才行。

1、開啟LINUX的路由轉(zhuǎn)發(fā)功能 sudo sysctl -w net.ipv4.ip_forward=1

2、iptables -F ?清理iptable所有表的所有規(guī)則

iptables -t nat -F 指定清理iptable nat表的所有規(guī)則

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE //將路由后從eth0接口出去的包,進(jìn)行源IP地址偽裝,偽裝成該接口的IP地址。

最后將命令整理成init.sh shell腳本,設(shè)置成開機(jī)自啟動(dòng)就完成了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • dnsmasq是什么我就不說了,請(qǐng)自行百度。 目前我需要使用的用途是:1.dhcp(分配一個(gè)或者多個(gè)內(nèi)網(wǎng)ip地址)...
    dnaEMx閱讀 16,324評(píng)論 0 6
  • 起因 現(xiàn)在市面上有那么多路由器可以選擇,為什么還要自己造一臺(tái)呢?很多國(guó)產(chǎn)路由器 fork 自 OpenWRT 的源...
    程序員Delton閱讀 3,490評(píng)論 5 10
  • 我想要什么? 我能克服什么? 我該怎么做? 依現(xiàn)在看他是不會(huì)培養(yǎng)我成長(zhǎng)了,只能全靠自己。用打掉牙往肚里咽的勇氣,也...
    空靈人生閱讀 202評(píng)論 0 0
  • 父親節(jié),我嬸寫了篇文章,說讓我也寫寫,我說我不敢,因?yàn)槲視?huì)哭,但是我還是寫了,二十多年,沒有說過這些,今天,...
    王妮妮_閱讀 242評(píng)論 0 0
  • 微涼的清晨,走在鋪滿青石板的林蔭小道上,腳下層層的落葉像一塊寬大柔軟的金色地毯,踩在上面發(fā)出綿綿的沙沙聲。 陣陣秋...
    纖子墨閱讀 600評(píng)論 4 12