家里折騰網(wǎng)絡(luò)配置(漢土IP盒子)

前言

最近買了個漢土IP盒子,說可以給我家里弄個固定IP硝烂,每個月只需要二三十塊錢箕别。這個很牛逼,很值得呀滞谢。但是吧串稀,如果只能對外連一臺電腦,這個事情就有些雞肋了爹凹。不過呢厨诸,巧了,家里有個J1900的軟路由禾酱,有四個網(wǎng)口微酬。于是就開啟了本次折騰的旅程。

目標(biāo)

我手上呢颤陶,有兩個家用無線路由器颗管,一個J1900四網(wǎng)口軟路由,刷的OpenWrt滓走,以及一個樹莓派4B4G版垦江。所有的東西大概如下:


可用設(shè)備

我基本上的想法有這么幾點:

  1. 由于我現(xiàn)在用的蒲公英路由器上的家里的局域網(wǎng),所以暫時就還用它做主路由了搅方,性能什么的比吭,湊合就好。
  2. 如果我把IP盒子側(cè)接入我的局域網(wǎng)姨涡,我總覺得會有安全問題衩藤,而且看評論側(cè)接也出現(xiàn)了不少問題,所以我不打算用側(cè)接涛漂。
  3. 由于IP盒子的官方配置里沒有網(wǎng)關(guān)的功能配置赏表,所以我打算讓IP盒子直連的是我的軟路由,以此充當(dāng)網(wǎng)關(guān)和防火墻匈仗。
  4. 在軟路由下瓢剿,我可以開一個子網(wǎng),以此我就可以弄一個自己的封閉的局域網(wǎng)悠轩。它們既可以通過我的局域網(wǎng)訪問公網(wǎng)间狂,也可以通過IP盒子從外網(wǎng)訪問進來,是在是美的很哗蜈。

搭建

基于以上幾點前标,我搭建的結(jié)構(gòu)如下圖:

設(shè)備連接示意圖

需要補充說明的是坠韩,我軟路由中l(wèi)an、wan炼列、wan2是在一個firewall中的只搁,所以可以很方便得通信,我對在軟路由中透傳192.168.2.10的22端口俭尖,是可以實現(xiàn)端口映射的氢惋。這個時候其實我是可以從192.168.2.1、192.168.31.2稽犁、192.168.148.100的22端口訪問192.168.2.10的22端口的焰望,但是由于網(wǎng)關(guān)192.168.31.1的路由能力,是找不到192.168.2.1和192.168.148.100的已亥。但是熊赖,我通過固定IP訪問卻無法訪問這個22端口。之前我測試過虑椎,軟路由的時候是可以22訪問軟路由的震鹉。本來我想通過網(wǎng)絡(luò)配置界面測試固定ip是否通了,但是80端口默認(rèn)是封了的捆姜,沒法用來做測試传趾。所以,這趟測試也是測試IP盒子怎么用的過程泥技。
下面我們詳細說下圖中需要的具體配置:

  • lan:ip是192.168.2.1浆兰,掩碼:255.255.255.0,網(wǎng)關(guān)不填
  • wan:ip是192.168.31.2珊豹,掩碼:255.255.255.0簸呈,網(wǎng)關(guān)192.168.31.1
  • wan3: ip是192.168.148.100,掩碼:255.255.255.0店茶,網(wǎng)關(guān):192.168.148.1

這些是一些ip的基本配置蝶棋。另外需要注意的是剛才j1900各個接口的名字其實就是隨便取的,關(guān)鍵的是他們屬于的防火墻策略忽妒。在openwrt中默認(rèn)提供了兩個防火墻(firewall)策略,分別是lan和wan兼贸,在設(shè)置interface的時候?qū)嶋H上是需要選擇他們所屬的防火墻策略的段直。在開始的時候,我為了可以讓wan口可以訪問近來溶诞,對防火墻策略進行了調(diào)整鸯檬,然后我自己就改不回來了。后來我是在弄不通了螺垢,找漢土IP盒子的售后幫忙喧务,人家從上午十點調(diào)到晚上十一點赖歌,可能也是受限于不知道怎么調(diào)防火墻策略吧,一直沒通功茴,不過還是非常感謝他庐冯。在他調(diào)試的過程中,我對wan域坎穿、防火墻配置展父,什么是lan口wan口等這些概念有了初步的認(rèn)知和了解。今天我重新刷了openwrt玲昧,分分鐘搞定栖茉。
lan口屬于lan域,wan和wan2屬于wan域孵延。這個時候吕漂,WAN口是不可以從外側(cè)訪問的,所以尘应,這個時候我就只能在lan口下訪問網(wǎng)絡(luò)配置界面惶凝。但是我的主路由的局域網(wǎng)是在192.168.31.0網(wǎng)段的,這就很尷尬了菩收。于是我做了一個端口映射梨睁,將192.168.2.1的80端口映射到了wan域的8080端口上。于是娜饵,我就可以用192.168.31.2:8080來進行網(wǎng)絡(luò)配置了坡贺。下面放一張配置的截圖吧,要不應(yīng)該還是會有拉掉一些細節(jié)(我重置后沒有重命名interface箱舞,wan6就是圖中的wan2):

端口映射界面

OpenVPN服務(wù)器搭建

既然這個局域網(wǎng)絡(luò)是用來搭建家里的網(wǎng)絡(luò)了遍坟,那么隨時可以訪問這個網(wǎng)絡(luò)就非常重要了。公司的網(wǎng)絡(luò)是使用的ipsec+SSL搭建的VPN晴股,用的是路由器上自己支持的功能愿伴。我翻了下,openwrt默認(rèn)的功能很少电湘。而且隔节,之前我折騰在linux服務(wù)器上搭建ipsec服務(wù)是很麻煩的,所以寂呛,這次我打算使用openvpn怎诫,搭建簡單,使用簡單贷痪。
在openwrt的官網(wǎng)是由相關(guān)內(nèi)容的幻妓,以下是地址:
https://openwrt.org/docs/guide-user/services/vpn/openvpn/basic 但是說實話,還是感覺比較虛劫拢。網(wǎng)上我還找了篇帖子肉津,是https://v2ex.com/t/624222
這里似乎對配置的內(nèi)容說的比較詳細强胰,而且最后是有g(shù)ui管理界面的。對照著來吧妹沙。

下面是我的搭建過程:

安裝軟件包:

opkg update
opkg install openvpn-easy-rsa openvpn-mbedtls luci-app-openvpn

配置防火墻開放相應(yīng)端口

# Configure firewall
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci rename firewall.@forwarding[0]="lan_wan"
uci del_list firewall.lan.device="tun0"
uci add_list firewall.lan.device="tun0"
uci -q delete firewall.vpn
uci set firewall.ovpn="rule"
uci set firewall.ovpn.name="Allow-OpenVPN"
uci set firewall.ovpn.src="wan"
uci set firewall.ovpn.dest_port="1194"
uci set firewall.ovpn.proto="udp"
uci set firewall.ovpn.target="ACCEPT"
uci commit firewall
/etc/init.d/firewall restart

說實話偶洋,我不太看得懂上面是干什么的,比如為什么要rename那幾個東西初烘,為什么要刪除或者添加這些東西涡真。不過,結(jié)果和預(yù)期的一樣肾筐,你可以在Network->firewall->Traffic Rules下看到這個內(nèi)容了:

openvpn的防火墻策略

生成服務(wù)器和客戶端證書

# Configuration parameters
export EASYRSA_PKI="/etc/easy-rsa/pki"
export EASYRSA_REQ_CN="ovpnca"
 
# Remove and re-initialize the PKI directory
easyrsa --batch init-pki
 
# Generate DH parameters
# 此步會較久
easyrsa --batch gen-dh
 
# Create a new CA
easyrsa --batch build-ca nopass
 
# Generate a keypair and sign locally for a server
easyrsa --batch build-server-full server nopass
 
# Generate a keypair and sign locally for a client
easyrsa --batch build-client-full client nopass

生成服務(wù)器配置文件

# Generate TLS PSK
OVPN_PKI="/etc/easy-rsa/pki"
openvpn --genkey --secret ${OVPN_PKI}/tc.pem
 
# Configuration parameters
OVPN_DIR="/etc/openvpn"
OVPN_PKI="/etc/easy-rsa/pki"
OVPN_DEV="$(uci get firewall.lan.device | sed -e "s/^.*\s//")"
OVPN_PORT="$(uci get firewall.ovpn.dest_port)"
OVPN_PROTO="$(uci get firewall.ovpn.proto)"
OVPN_POOL="192.168.8.0 255.255.255.0"
OVPN_DNS="${OVPN_POOL%.* *}.1"
OVPN_DOMAIN="$(uci get dhcp.@dnsmasq[0].domain)"
OVPN_DH="$(cat ${OVPN_PKI}/dh.pem)"
OVPN_TC="$(sed -e "/^#/d;/^\w/N;s/\n//" ${OVPN_PKI}/tc.pem)"
OVPN_CA="$(openssl x509 -in ${OVPN_PKI}/ca.crt)"
NL=$'\n'
 
# Configure VPN server
umask u=rw,g=,o=
grep -l -r -e "TLS Web Server Auth" "${OVPN_PKI}/issued" \
| sed -e "s/^.*\///;s/\.\w*$//" \
| while read -r OVPN_ID
do
OVPN_CERT="$(openssl x509 -in ${OVPN_PKI}/issued/${OVPN_ID}.crt)"
OVPN_KEY="$(cat ${OVPN_PKI}/private/${OVPN_ID}.key)"
cat << EOF > ${OVPN_DIR}/${OVPN_ID}.conf
verb 3
user nobody
group nogroup
dev ${OVPN_DEV}
port ${OVPN_PORT}
proto ${OVPN_PROTO}
server ${OVPN_POOL}
topology subnet
client-to-client
keepalive 10 120
persist-tun
persist-key
push "dhcp-option DNS ${OVPN_DNS}"
push "dhcp-option DOMAIN ${OVPN_DOMAIN}"
push "redirect-gateway def1"
push "persist-tun"
push "persist-key"
<dh>${NL}${OVPN_DH}${NL}</dh>
<tls-crypt>${NL}${OVPN_TC}${NL}</tls-crypt>
<ca>${NL}${OVPN_CA}${NL}</ca>
<cert>${NL}${OVPN_CERT}${NL}</cert>
<key>${NL}${OVPN_KEY}${NL}</key>
EOF
done
/etc/init.d/openvpn restart

OVPN_POOL="192.168.8.0 255.255.255.0" 定義的地址池不要和內(nèi)網(wǎng)已有的地址沖突 push "redirect-gateway def1" 是將 OpenVPN 的網(wǎng)關(guān)作為默認(rèn)網(wǎng)關(guān)哆料,會創(chuàng)建默認(rèn)路由指向 OpenVPN 的網(wǎng)關(guān),如果只是需要訪問家里的網(wǎng)絡(luò)吗铐,可將這條按需要修改东亦,如push "route 192.168.1.0 255.255.255.0 192.168.8.1"
生成客戶端 ovpn 文件

# 先確定使用 DDNS 還是公網(wǎng) IP 作為 OpenVPN 連接使用,并配置好 OVPN_SERV 參數(shù)唬渗,本次以 DDNS 地址為例子
OVPN_SERV="ddns.example.com"

# Configuration parameters
OVPN_DIR="/etc/openvpn"
OVPN_PKI="/etc/easy-rsa/pki"
OVPN_DEV="$(uci get firewall.lan.device | sed -e "s/^.*\s//")"
OVPN_PORT="$(uci get firewall.ovpn.dest_port)"
OVPN_PROTO="$(uci get firewall.ovpn.proto)"
OVPN_TC="$(sed -e "/^#/d;/^\w/N;s/\n//" ${OVPN_PKI}/tc.pem)"
OVPN_CA="$(openssl x509 -in ${OVPN_PKI}/ca.crt)"
NL=$'\n'
 
# Generate VPN client profiles
umask u=rw,g=,o=
grep -l -r -e "TLS Web Client Auth" "${OVPN_PKI}/issued" \
| sed -e "s/^.*\///;s/\.\w*$//" \
| while read -r OVPN_ID
do
OVPN_CERT="$(openssl x509 -in ${OVPN_PKI}/issued/${OVPN_ID}.crt)"
OVPN_KEY="$(cat ${OVPN_PKI}/private/${OVPN_ID}.key)"
cat << EOF > ${OVPN_DIR}/${OVPN_ID}.ovpn
verb 3
dev ${OVPN_DEV%%[0-9]*}
nobind
client
remote ${OVPN_SERV} ${OVPN_PORT} ${OVPN_PROTO}
auth-nocache
remote-cert-tls server
<tls-crypt>${NL}${OVPN_TC}${NL}</tls-crypt>
<ca>${NL}${OVPN_CA}${NL}</ca>
<cert>${NL}${OVPN_CERT}${NL}</cert>
<key>${NL}${OVPN_KEY}${NL}</key>
EOF
done
ls ${OVPN_DIR}/*.ovpn

將該 ovpn 導(dǎo)入到 OpenVPN 的客戶端就可以鏈接上 OpenVPN 服務(wù)器典阵。
不過,這次有了一個變化镊逝。我之前是把wan口的80透到了lan口的8080端口壮啊,但是通過openvpn連通后,似乎是通過wan口側(cè)訪問的撑蒜,所以歹啼,wan口的ip:80端口就可以訪問到頁面。相應(yīng)的座菠,其它的端口映射端口也可以直接通過wan口側(cè)的端口訪問狸眼,而映射后的端口似乎不可用了,可能還能在lan口的ip上用吧浴滴,懶得改了拓萌。

補充

  • 不懂就千萬不要動防火墻配置
  • 如果想要訪問192.168.2.0網(wǎng)段的及其,在本機加一條路由就可以了升略,命令如下:
route add 192.168.2.0 mask 255.255.255.0 192.168.31.1 # 添加指令
route print # 查詢指令
route delete 192.168.2.0 #刪除路由
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末微王,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子品嚣,更是在濱河造成了極大的恐慌骂远,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腰根,死亡現(xiàn)場離奇詭異,居然都是意外死亡拓型,警方通過查閱死者的電腦和手機额嘿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門瘸恼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人册养,你說我怎么就攤上這事东帅。” “怎么了球拦?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵靠闭,是天一觀的道長。 經(jīng)常有香客問我坎炼,道長愧膀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任谣光,我火速辦了婚禮檩淋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萄金。我一直安慰自己蟀悦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布氧敢。 她就那樣靜靜地躺著日戈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪孙乖。 梳的紋絲不亂的頭發(fā)上浙炼,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音的圆,去河邊找鬼鼓拧。 笑死,一個胖子當(dāng)著我的面吹牛越妈,可吹牛的內(nèi)容都是我干的季俩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼梅掠,長吁一口氣:“原來是場噩夢啊……” “哼酌住!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起阎抒,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤酪我,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后且叁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體都哭,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了欺矫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纱新。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖穆趴,靈堂內(nèi)的尸體忽然破棺而出脸爱,到底是詐尸還是另有隱情,我是刑警寧澤未妹,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布簿废,位于F島的核電站,受9級特大地震影響络它,放射性物質(zhì)發(fā)生泄漏族檬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一酪耕、第九天 我趴在偏房一處隱蔽的房頂上張望导梆。 院中可真熱鬧,春花似錦迂烁、人聲如沸看尼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藏斩。三九已至,卻和暖如春却盘,著一層夾襖步出監(jiān)牢的瞬間狰域,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工黄橘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兆览,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓塞关,卻偏偏與公主長得像抬探,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子帆赢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345