linux中打造智能路由功能詳解

來源:互聯網
上載者:User

本文章來給各位同學詳細介紹關於linux中打造智能路由功能詳解,有需要瞭解學習的同學可進入參考。

所需裝置清單:

一台自由的主機
一台已經刷了OpenWRT的路由器
一根網線
一個2G的隨身碟
在此之前請確保你已經有了一台刷過OpenWRT的路由器,然後給路由器上電,通過網線直連,連線路由器:

telnet 192.168.1.1設定密碼:

passwd而後退出即可用SSH進行登入了:

exitssh root@192.168.1.1接著修改路由的無線配置,從而可以開啟Wifi:

vim /etc/config/wireless注釋掉option disabled 1一行,並設定Wifi的加密方式和密碼:

 代碼如下 複製代碼
config wifi-device  radio0
 option type     mac80211
 option channel  11
 option hwmode 11ng
 option path 'platform/ar933x_wmac'
 option htmode HT20
 list ht_capab SHORT-GI-20
 list ht_capab SHORT-GI-40
 list ht_capab RX-STBC1
 list ht_capab DSSS_CCK-40
 # REMOVE THIS LINE TO ENABLE WIFI:
 # option disabled 1
 
config wifi-iface
 option device   radio0
 option network  lan
 option mode     ap
 option ssid     OpenWrt
 option encryption psk2
 option key 'password'

然後修改網路設定:

vim /etc/config/network注釋掉option ifname 'eth0'並增加WAN口設定,

 代碼如下 複製代碼
config interface 'loopback'
 option ifname 'lo'
 option proto 'static'
 option ipaddr '127.0.0.1'
 option netmask '255.0.0.0'
 
config globals 'globals'
 option ula_prefix 'fd48:f746:e8a5::/48'
 
config interface 'lan'
 # option ifname 'eth0'
 option type 'bridge'
 option proto 'static'
 option ipaddr '192.168.1.1'
 option netmask '255.255.255.0'
 option ip6assign '60'
 
config interface 'wan'
 option ifname 'eth0'
 option proto 'dhcp'

而後重啟路由,即可通過Wifi串連到路由器,此時將路由通過網線接入網路或者上級路由即可作為一個普通的路由器使用了。

reboot安全模式

如果期間由於IP地址配置錯誤等原因導致無法串連到路由器,可以進入路由器的安全模式進行恢複:

1、拔掉路由器電源
2、連結電源後使用牙籤不斷抽插路由器的reset按鈕,當路由器的指示燈開始快速閃爍就說明已經進入了安全模式
3、安全模式不會載入任何配置,因此還需要通過最初提到的方式,直連並通過telnet 192.168.1.1連線路由器
4、掛載root分區:mount_root
5、擦除先前的配置:firstboot
6、設定密碼:passwd root
7、重啟:reboot -f

而後就可以重新開始進行配置了,如果其中通過firstboot擦除配置的過程中遇到錯誤,可以通過在OpenWRT中重新刷機的方式解決。

準備隨身碟

我所用的路由只有2MB儲存空間,安裝OpenWRT之後,空間已所剩無幾,如果要安裝後續提到的OpenVPN等軟體,很明顯空間是不夠用的,但是我們可以通過路由器的USB介面使用隨身碟來做擴充。

我這裡給2G的隨身碟分了3個區,1G(primary, bootable, ext4)/500MB(primary, swap)/500MB(primary, ext4),分區完後對其進行格式化,就完成了隨身碟的準備工作,我是通過Mac中的Ubuntu虛擬機器進行下述操作的:

 代碼如下 複製代碼
cfdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkswap /dev/sdb2
mkfs.ext4 /dev/sdb3

隨身碟準備完畢後就可以在路由上安裝所需的軟體了:

 代碼如下 複製代碼
opkg update
opkg install kmod-usb2 kmod-fs-ext4
opkg install kmod-usb-storage
opkg install block-mount
reboot

接著重啟路由器,而後配置fstab實現隨身碟分區的自動掛載:

 代碼如下 複製代碼
reboot
vim /etc/config/fstab

修改如下配置:

 代碼如下 複製代碼
config 'mount'
 option target /mnt/usb
 option device /dev/sda1
 option fstype ext4
 option enabled 1
 
config 'swap'
 option device /dev/sda2
 option enabled 1
 
config 'mount'
 option target /mnt/home
 option device /dev/sda3
 option fstype ext4
 option enabled 1

而後重啟路由器後:

reboot這時候你就可以通過df -h看到分區已經自動掛載了:

 代碼如下 複製代碼

df -h

Filesystem                Size      Used Available Use% Mounted on
rootfs                    1.1M    632.0K    456.0K  58% /
/dev/root                 1.8M      1.8M         0 100% /rom
tmpfs                    14.1M     72.0K     14.1M   0% /tmp
/dev/mtdblock3            1.1M    632.0K    456.0K  58% /overlay
overlayfs:/overlay        1.1M    632.0K    456.0K  58% /
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda1               945.2M     11.0M    869.4M   1% /mnt/usb
/dev/sda3               451.5M      2.3M    421.5M   1% /mnt/home

接著執行如下操作:

 代碼如下 複製代碼
mkdir /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /mnt/usb -a
umount /tmp/root
rm -r /tmp/root

接著在opkg.conf配置中增加dest usb /mnt/usb,之後就可以將我們需要的OpenVPN安裝到USB中了:

 代碼如下 複製代碼
vim /etc/opkg.conf
opkg update
opkg --dest usb install openvpn-openssl
ln -s /mnt/usb/usr/lib/libssl.so.1.0.0 /usr/lib/
ln -s /mnt/usb/usr/lib/libcrypto.so.1.0.0 /usr/lib/
ln -s /mnt/usb/usr/lib/liblzo2.so.2 /usr/lib/
ln -s /mnt/usb/usr/sbin/openvpn /usr/sbin/

到此已經可以運行OpenVPN了:

openvpn --version由於OpenVPN安裝在USB中,所以後續啟動OpenVPN會遇到找不到tun模組的狀況,接下來配置tun模組:

 代碼如下 複製代碼
ln -s /mnt/usb/lib/modules/3.10.4/tun.ko /lib/modules/3.10.4/
ln -s /mnt/usb/etc/modules.d/30-tun /etc/modules
ln -s /mnt/usb/etc/modules.d/30-tun /etc/modules.d/
modinfo tun

接著我們關閉防火牆並看一下預設的一些轉寄和NAT規則:

 代碼如下 複製代碼
/etc/init.d/firewall stop
/etc/init.d/firewall disable
iptables -L -n --line-number
iptables -t nat -vnL POSTROUTING --line-number

可以看到此時預設是沒有任何轉寄規則的,因此此時串連到路由器的裝置是無法上網的,配置路由每次上電重啟時候自動載入tun模組並加入轉寄規則:

vim /etc/rc.local修改如下配置:

 代碼如下 複製代碼
insmod tun
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables-save

 
exit 0
到此為止你的路由器已經可以再次正常接入互連網了,下面我們需要配置OpenVPN並進行流量的智能分發,即配置哪些流量走VPN。

首先我們先來配置OpenVPN,這包含兩方面的配置,服務端和用戶端。

服務端

 代碼如下 複製代碼
wget http://ipxcore.com/openvpn-debian-install.sh
chmod +x openvpn-debian-install.sh
./openvpn-debian-install.sh
 
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
iptables -I INPUT -p tcp --dport 1194 -j ACCEPT
iptables -I INPUT -p udp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save

用戶端

用戶端需要配置在服務端產生的憑證路徑,首先從伺服器下載打包的認證檔案:

 代碼如下 複製代碼

scp root@100.100.100.100:/root/keys.tgz ./
tar -zxvf keys.tgz
vim 703n.ovpn
703n.ovpn

配置如下:

 代碼如下 複製代碼
client
remote 100.100.100.100 1194
dev tun
comp-lzo
ca /root/etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /root/etc/openvpn/easy-rsa/2.0/keys/client1.crt
key /root/etc/openvpn/easy-rsa/2.0/keys/client1.key
route-delay 2
route-method exe
max-routes 3888
redirect-gateway def1
verb 3

到此為止,通過當前的設定檔已經可以啟動OpenVPN並實現所有流量經過VPN轉寄了:

openvpn --config ./703n.ovpn為了實現流量的智能分發,同時也是為了節省VPN的流量,可以通過ChnRoutes實現,在Mac上下載ChnRoutes並執行:

python chnroutes.py -p android會產生兩個檔案vpnup.sh和vpndown.sh,將這兩個檔案頭部的alias刪除,並下載到路由器中之後,在設定檔底部增加如下設定:

 代碼如下 複製代碼
script-security 2
up vpnup.sh
down vpndown.sh

好了,這時候再次啟動OpenVPN,在Mac上分別traceroute下Baidu和Twitter就會發現,流量已經自動分發了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.