Weil Jimmer's BlogWeil Jimmer's Blog


使用 OpenWrt 踩坑經驗與心得 設置虛擬區域網路進行隔離

-
更新於 2023-08-27 21:51:49

前言

這次我就不說太多廢話了,接上篇文章的故事。

其實光是搞這個軟路由的所花的精力應該遠遠大於你省下的錢,就純粹是為了自己動手搞事才會弄這個東西,總感覺有點不划算。

在上次的經驗中,光是韌體的選擇就五花八門了,而且我還踩了不少出錯的點,例如,我下載的版本是 openwrt-x64-R23.4.1-squashfs-combined-efi.img,紅字重點。

那就不是常規的安裝方式,在用 PVE 建立虛擬機的時候,就要選 UEFI,當初根本想都沒想,後來上網查,看到別人說使用沒有 EFI 就正常。

可是多數版本都是阿,我也是找好久文章才翻到有篇提到要設定,覺得是知識盲區。

話說回來,你選的版本如果是 squashfs 版本,則是可以自由延伸你的硬碟大小的。例如用 PVE 內建的就可以直接延伸了。

後來我試了好幾套,因為我想設置 VLAN 阿!結果沒想到新版本的 OpenWrt都不支援。被拿掉了。

我還特別去裝了 L大的版本。想說不可能沒有啊。裝完才發現沒有支援 VLAN,白費時間。

安裝

後來,又去查了第二套,結果我也在上面浪費了許久時間。嘗試安裝了 immortalwrt-21.02.6-x86-64 。

這次是有支援 VLAN 功能的,但問題是沒想像中那麼簡單。因為 OpenWrt 似乎在 18 以上的版本就直接拔掉 Switch 的功能,只能用 Bridge 的方式去橋接網路裝置。

而這個正是很大的坑,試滿久最後覺得非常古怪,總感覺不是我的問題。總之,其實也不太推這版本就是。

裝這個版本的時候,看網路上還有透過打指令的方式重新調整硬碟大小的覺得滿奇特的,在這邊附上他用的指令,做為筆記。

#進入資料夾
root@pve1:/var/lib/vz/template/iso#

#填入 2GB 的零資料
dd if=/dev/zero bs=1M count=2048 >> your.img

#讀取 img 到 parted 的工具中
parted your.img 
#列出分區
(parted) print
Model:  (file)
Disk /var/lib/vz/template/iso/immortalwrt-21.02.6-x86-64-generic-squashfs-combined-efi.img: 3004MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                  Flags
128     17.4kB  262kB   245kB                                      bios_grub
 1      262kB   17.0MB  16.8MB  fat16        EFI System Partition  boot, esp
 2      17.3MB  856MB   839MB                                      msftdata

(parted)

#重新調整大小
resizepart 2 100%

最後再匯入至 PVE 虛擬機。


# 100 是你建立的虛擬機 ID。
qm importdisk 100 immortalwrt-21.02.6-x86-64-generic-squashfs-combined-efi.img local-lvm

後來研究了頗久,還是決定直接重裝一版新的,也就是我目前的版本!

現在體驗其實還滿良好的,雖然最終放棄搞那個鬼東西,但我有想到替代方案,頂多就是重新配置一下網路。也許以後有機會再回來研究,暫時先這麼做。

按照慣例,安裝完硬碟,開機,首先原則上,因為網段不一樣,所以沒辦法直接進,除非改網卡,有點麻煩。

所以這邊我都會先用 PVE主控台進去,而且我後來才發現如果在 NoVNC 畫面中按下某些鍵會被擋的話,只要輸入 Ctrl + Q 就可以關閉,接著繼續打指令都不會被干擾到,之前輸入 A或S之類的,都彈出個視窗,害我沒辦法輸入進去,有夠靠杯,我還以為是 bug,看起來是 feature,有夠廢。

root@OpenWrt:~# vim /etc/config/network

進入修改 network 檔案裡面的 interface,把 WAN、LAN 所用的 ETH 接口定義好。

root@OpenWrt:~# vim /etc/config/firewall

默認沒有裝 Nano 有點不爽,只能用 Vim,好險還有 Vim 可以用,不然真的很難改。

config defaults
        option syn_flood '1'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option fullcone '1'
        option flow_offloading '1'
        option flow_offloading_hw '0'

config zone
        option name 'lan'
        list network 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'

config zone
        option name 'wan'
        list network 'wan'
        list network 'wan6'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'

如果把路由器的 WAN 插到另一台路由器的 LAN 上,就不用改網段,但是預設值都會擋 WAN。所以,只要把 WAN 的 INPUT 改成 ACCEPT 就可以了。

然後別忘記要重啟網路服務,不然配置不會應用,除非重開機。


root@OpenWrt:~# /etc/init.d/network restart
root@OpenWrt:~# /etc/init.d/firewall restart

接著就可以直接訪問 OpenWrt 的管理網頁。

光是看到這介面,就覺得挺不錯的,直接下定決心就用它了。

原本想搞 VLAN 的,後來一直遇到鬼問題,覺得奇怪,有時候啥都沒改重開機就正常了,讓我覺得很訝異,見鬼了,剛好現在農曆七月。

搞到後來,覺得有可能就是硬體和內核方面的問題,乾脆放棄。更改一下網路模式,目前是弄個雙網卡,直接設置兩個網橋不同的 LAN,這樣也算是差不多的概念,而且沒毛病,更好設置,不用管那個 Tag。

設定

第一步就很簡單,直接在設備 (Device) 建立一個網橋,添加 ETH1,非常簡單。

記得關掉 IPv6,很沒意義的功能,通常也不會用到,而且說不定就是因為這東西搞事。

添加完後,再去接口 (Interface) 建立 lan2 接口,設置成靜態 IP。

建立完記得設置 IP 地址,網段,那些東西,然後不要忘記要加入 DHCP,這個沒加的話,LAN 插上去不會配發 IP 自然就沒網路。

數量那些維持預設就好了,基本上沒差,不用動。

然後是坑人的地方,你以為這樣就完了嗎?還有防火牆阿!

要建立一個新規則,比如取名為 lan2,編輯規則,轉發到 WAN,如果是設置 VLAN 其實也是同樣的道理,如果沒有轉發到 WAN,那基本上等於無網際網路的純內網,如果要架設隔離公網的環境是可以考慮這麼做。

總結

基本上你搞完橋接,新增接口,設置 DHCP,防火牆也設定了,你的 WAN 也正常,那理論上就可以 Work。

像我這情況就是 ETH0 (LAN) 和 ETH1 (LAN2),兩邊是互相隔離的。

由於我網孔其實很少,配一配基本上就沒得用了。下面是我的架構圖,只剩下一個孔,QQ。

端口同個顏色代表同個區網,ETH3 是我 PVE 會用到的網路口,暫時不會拔掉,然後交換機也要設定 Port-based 的 VLAN。不然讓我自己建立的虛擬網路和硬路由疊在一起。

同時有兩個 DHCP 伺服器會出錯。

雖然感覺有交換器就夠了。根本不需要軟路由啊!不過軟路由上面的防火牆功能似乎非常強大,我覺得如果會用算是很不錯的工具。

相對於交換器就少得可憐,幾乎沒什麼可以設定的,除了端口隔離之外就沒甚麼有用的東西了。

而且軟路由還有一堆別人做的插件安裝包,可以一鍵下載。用不用得到是一回事,有總比沒有好。(雖然都是大陸貨,要小心後門。)

其他文章:
軟路由初體驗 在 PVE 8.0 上安裝 OpenWrt 22.03
使用 OpenWrt 與 WireGuard 實現 NordVPN、雙層 NAT、特定區域網路 VPN 與 Kill Switch

By Weil Jimmer


This entry was posted in General, Experience, The Internet, OpenWrt, Tools By Weil Jimmer.

About Weil Jimmer

avatar

Hi! Everyone! My name is Weil Jimmer. This is my personal blog. I'm a webmaster of this site. I hope the site will be popular. Now, Let's go! Enjoy gaining more knowledge.
More Details About Me : https://weils.net/profile.php

Leave a Reply

Name*:

Email*:

Website:

Privacy:   

Comment*:

Visitor Count

pop
nonenonenone

Note

台灣假新聞橫行,沒一家霉體能信的,網軍側翼到處洗風向,堪憂。

毋忘初心,
絕不利慾薰心。

支持網路中立性.
Support Net Neutrality.

飽暖思淫欲,
饑寒起盜心。

支持臺灣實施無條件基本收入

歡迎前來本站。

Words Quiz


Search

Music

Blogging Journey

4479days

since our first blog post.

The strong do what they can and the weak suffer what they must.

Privacy is your right and ability to be yourself and express yourself without the fear that someone is looking over your shoulder and that you might be punished for being yourself, whatever that may be.

It is quality rather than quantity that matters.

I WANT Internet Freedom.

Reality made most of people lost their childishness.

Justice,Freedom,Knowledge.

Without music life would be a mistake.

Support/Donate

This site also need a little money to maintain operations, not entirely without any cost in the Internet. Your donations will be the best support and power of the site.
MethodBitcoin Address
bitcoin1gtuwCjjVVrNUHPGvW6nsuWGxSwygUv4x
buymeacoffee
Register in linode via invitation link and stay active for three months.Linode

Support The Zeitgeist Movement

The Zeitgeist Movement

The Lie We Live

The Lie We Live

The Questions We Never Ask

The Questions We Never Ask

Man

Man

THE EMPLOYMENT

Man

In The Fall

In The Fall

Facebook is EATING the Internet

Facebook

Categories

Android (7)

Announcement (4)

Arduino (2)

Bash (2)

C (3)

C# (5)

C++ (1)

Experience (52)

Flash (2)

Free (13)

Functions (36)

Games (13)

General (60)

Git (2)

HTML (7)

Java (13)

JS (7)

Mood (24)

NAS (2)

Note (32)

Office (1)

OpenWrt (6)

PHP (9)

Privacy (4)

Product (12)

Python (4)

Software (11)

The Internet (25)

Tools (16)

VB.NET (8)

WebHosting (7)

Wi-Fi (5)

XML (4)