硬件資料
OpenWRT給出的:https://openwrt.org/toh/hwdata/tp-link/tp-link_tl-wdr6500_v2官網都沒那么全
一、刷系統
參考:https://www.sunxidong.com/289.html
需要的硬件軟件:TP-LINK WDR6500 V2,Breed固件,OpenWRT WDR6500 專用固件
breed:http://img.hfzs.store/file/openwrt/wdr6500v2.bin
專用固件:http://img.hfzs.store/file/openwrt/openwrt-18.06.2-ar71xx-generic-tl-wdr6500-v2-squashfs-factory.bin
(自己家的服務器,心情不好能會關,有需要艾特一下我吧哈哈)
1. 燒breed
瀏覽器輸入192.168.1.1(也可以是其他)打開tp-link配置頁面,系統設置,更新固件,上傳下載好的wdr6500v2.bin,點擊更新,等待自動重啟。
這時重啟好之后還是之前的tp-link配置頁面,需要按下reset鍵(有個圓形小孔)持續幾秒鍾,直到led不挺閃爍,松開reset,等待幾秒鍾,再輸入網址192.169.1.1登錄配置界面,就能看到breed的配置界面。
2. 燒OpenWRT固件
先科普一下,factory與sysupgrade版本的區別。factory.bin = sysupgrade.bin + 剩余flash + 系統配置文件。sysupgrade是用來升級OpenWRT的,直接用breed燒進sysupgrade也能用,但是很需要技巧,本文最后說一下怎樣ssh進入openwrt命令行重新燒進factory.bin
在breed 的固件更新界面,勾選固件上傳xxx-factory.bin,自動重啟,點擊開始刷固件就行。過一會重新登錄192.168.1.1就能看到OpenWRT的界面。首次登錄用戶名是root,沒有密碼,直接確定就行
3. 漢化
web界面安裝中文包。點擊system下的software,filter 輸入luci-i18n-base-zh-cn,點擊查找,把找到的包裝了會自動更新界面的。可能會遇到搜不出來的問題,可能是你wan口沒插好,或者dns配置有誤,本文最后會教如何解決。
4. 設置LAN口和WAN口
基本上路由器wan口插上能外網的網線,lan口插上你的PC機,pc機網卡設置自動獲取就能獲得192.168.1.0/24的IP地址,沒別的需求的話已經能用了。但往下我們需要配置pptp服務器,所以先把WAN口和LAN口設置一個靜態IP。LAN口為192.168.1.1/24開DHCP,WAN口192.168.31.254/24關DHCP,因為我想外網訪問所以wan要設置個IP。到此為止用web界面做的配置就配置完了,pc機也能正常上網了,下面開始命令行配置pptpd。
二、配置pptp server
1. 連接OpenWRT的ssh
本文用的是xshell客戶端,如果是win10系統的話直接在命令行敲ssh root@192.168.1.1
因為win10自帶了ssh客戶端,openwrt默認的用戶是root,IP默認是192.168.1.1,如果LAN設置了其他IP對着來改就是。然后敲yes保存公鑰,然后輸入密碼(輸入的密碼是看不見的,密碼默認為空,直接敲回車)。然后就連上了。
2. 安裝pptp
官方https://oldwiki.archive.openwrt.org/doc/howto/vpn.server.pptpd#prerequisites
$ opkg update #更新一下包列表,如果失敗或者報錯,ping www.baidu.com 看看能不能連網,或者按照下面方法更新一下dns
$ opkg install pptpd kmod-mppe ppp #最好分三條命令安裝着三個包
下面是安裝好的樣子。
然后就是配置pptpd了,官方有三個配置文件可以修改/etc/pptpd.conf,/etc/ppp/options.pptpd,/etc/ppp/chap-secrets但OpenWRT提供了一個更簡單的配置方法直接配置/etc/config/pptpd,就可以滿足日常需要
$ vi /etc/config/pptpd
#寫入一下信息
config service 'pptpd'
option 'enabled' '1' #使能
option 'localip' '192.168.1.1' #連接VPN之后客戶端看到的VPN服務器地址,應該不算是網關,但功能查不到
option 'remoteip' '192.168.1.2-5' #客戶端分配地址范圍
option 'nat' '1' #啟用net裝換,猜的
option 'internet' '1' #能和局域網通信,猜的
config 'login' #能登陸的賬號
option 'username' 'aaa'
option 'password' 'aaa'
config 'login'
option 'username' 'bbb'
option 'password' 'bbb'
下面是我的本機配置。
然后就可以啟動pptpd啦,然后看一下是否成功監聽1723端口
$ /etc/init.d/pptpd enable # 開啟啟動,這個是最直接的方法,和service pptpd enable,效果是一樣的
$ /etc/init.d/pptpd start # 啟動
$ netstat -antp # 查看端口1723
下面是我本機的例子。
3. 連接vpn
我是用win10自帶的vpn客戶端,設置->網絡和internet->vpn,設置IP(ip要是屬於OpenWRT的,能ping通),用戶名,密碼,然后直接連接。然后沒有意外是連不上的提示:端口已關閉之類的的錯誤。然后怎么辦呢。
我是先開打cmd,telnet到OpenWRT的1723端口發現是通的,端口是沒問題的,
百度了一下發現是18.x版本去除了個模塊要手動安裝,參考https://blog.csdn.net/boliang319/article/details/49755701,官方https://oldwiki.archive.openwrt.org/doc/howto/vpn.nat.pptp
$ opkg install kmod-nf-nathelper-extra
然后重啟下網絡和pptpd,連上了,皆大歡喜。然而很沒有介紹,連上vpn之后發現不能連外網,需要配置iptables規則,參考https://blog.csdn.net/d9394952/article/details/87868803,官方https://oldwiki.archive.openwrt.org/doc/howto/vpn.server.pptpd#prerequisites
$ vi /etc/firewall.user #用來配置用戶規則的,主要規則在/etc/config/network
iptables -A forwarding_rule -i ppp+ -j ACCEPT
iptables -A forwarding_rule -o ppp+ -j ACCEPT
iptables -A output_rule -o ppp+ -j ACCEPT
iptables -A input_wan_rule -p tcp --dport 1723 -j ACCEPT
iptables -A input_wan_rule -p tcp --dport 47 -j ACCEPT
iptables -A input_wan_rule -p gre -j ACCEPT
iptables -A input_rule -i ppp+ -j ACCEPT #上面簡單來說就是配置允許ppp+和wan口的1723,47端口只能走tcp協議
然后練了vpn之后就能連網啦。但是還是不能訪問局域網的其他主機,還要研究下。
2020年6月2日17點20分更新
最近openwrt突然死了一次,可能是開太久了把,所以按照上面方法再做了一次。我最后直接是吧firewall給關掉了,但是用不敢把input,output規則設置成DROP,畢竟弄錯了又要再來一遍,所以用我家的小米路由器做端口轉發就算了,以下是iptables配置
首先先把防火牆關調,他是會自動清除iptables所有規則的
$ /etc/init.d/firewall stop && /etc/init.d/firewall disable
然后我們需要一條net轉換規則用來給局域網內的機器連通外網,就是把局域網主機往外發的數據包改成右openwrt往外發。
$ iptables -t NAT -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
為什么要用MASQUERADE呢,因為我發現直接-j SNAT --to-source 192.168.31.254
(wan口地址),
居於網主機是ping不通192.168.31.254的...尷尬。
再然后我們需要把服務器的9000端口映射帶外網,所以首先我們要把小米路由的9000映射到192.168.31.254(openwrt wan口),然后設置我們的iptables做端口轉發,
$ iptables -t nat -A PREROUTING -p tcp --dport 9000 -j DNAT --to-destination 192.168.1.254:9000
$ iptables -t nat -A POSTROUTING -d 192.168.1.254 -p tcp --dport 9000 -j MASQUERADE
這樣既能上網又能端口映射了。
22點28分2020年6月9日更新
現在問題是內網機和客戶端不能互訪,客戶機能ping內網機,內網機ping不同客戶端。
經過幾天的排查,發現了一些比較重要的問題,第一,連外網的nat轉換沒用指定網卡,所以把所有的192.168.1.0/24的包都SNAT成192.168.1.1所以正確的我們要這樣修改
$ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
修改網之后全體人員都能連外網了,接下來就是互訪問題,我們需要開啟arp代理....打開設置文件 vim /etc/ppp/options.pptpd
添加以下一項
proxyarp #客戶端IP和內部網絡在同一網段必須啟用ARP代理
然后重啟pptpdservice pptpd restart
然后就好了。參考https://www.oschina.net/question/139033_84155
問題與解決
opkg update 報錯:* opkg_conf_load: Could not lock /var/lock/opkg.lock: Resource temporarily unavail
dns服務器解析不到。download.openwrt.org,改下dns就行
$ echo "nameserver 114.114.114.114">/tmp/resolv.conf
$ rm -f /var/lock/opkg.lock
$ opkg update
OpenWRT命令行燒.bin固件文件
首先要把.bin文件拷到openwrt去,我用的是win10自帶的scp命令,走22端口的。
$ scp xxx.bin root@192.168.1.1:/tmp/root #我的就/tmp/root稍微大一點所以就考到這里了
然后進入OpenWRT進行燒寫命令。
$ mtd -r write /tmp/root/xxxx.bin firmware #這個命令是用來燒原廠固件的,也就是xxxfactory.bin
$ sysupgrade /tmp/root/xxx.bin #設置是燒升級固件的,也就是xxxsysupgrade.bin