杯子茶室

关注有趣的事物

使用Linux土法炮製一台路由器#1

网络 0 评 50 度

情景

有這個想法的原因還是自己接觸了一段時間網絡,長期不滿於各種路由器套件的功能。現在能選擇的路由器系統也不多,用途最廣泛的Openwrt每次增減新功能都需要編譯,當然也有一些愛好者維護的可以持續更新的Openwrt系統,但始終不穩定,我也曾經在這類系統裡面吃過癟。於是我打算自己從Linux系統開始,一步一步搭一個簡單的家用Linux路由器。

環境介紹

  1. 路由器是很多年前購買的軟路由,CPU是J3455

    1. 四個網絡接口,分別為enp1s0,enp2s0,enp3s0,enp4s0
  2. 網絡DHCP獲取Public IP

方案選擇

選項方案
Linux發行版Debian
Firewallnftables
DHCP&DNSdnsmasq
DHCPv6DHCPCD
IPv6-rdradvd

配置本機網絡

安裝完Debian後,編輯 /etc/network/interface.d/enp1s0

auto enp1s0
iface enp1s0 inet dhcp
iface enp1s0 inet6 auto

建立網橋用於LAN

將LAN接口全部接入一個網橋,我的情況則是除了enp1s0以外的全部都接入LAN。

安裝網橋套件。

apt install bridge-utils -y

編輯 /etc/netwrok/interface.d/br0

auto br0
iface br0 inet static
    address 10.0.0.254
    broadcast 10.0.0.255
    bridge_ports enp2s0 enp3s0 enp4s0
    bridge_stp off
    bridge_waitport 0
    bridge_fd 0
    netmask 255.255.255.0

記得開啟內核轉發。

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

配置nftables Nat轉換,使LAN口可以連接外網

現在如果將設備連接到LAN口,即便配置好機器也無法直接上網。我們需要配置NAT轉換,讓LAN口可以訪問外網的資源。

先安裝nftables防火墻。

apt install nftables

nano /etc/nftables.conf 配置nftables讀取 /etc/nftables/目錄的配置

#!/usr/sbin/nft -f

flush ruleset

include "/etc/nftables/*.nft"

然後配置NAT,輸入 nano /etc/nftables/nat.nft

#! /usr/sbin/nft -f
table ip nat {
        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                ip saddr 10.0.0.0/24 oifname "enp1s0" masquerade
        }

        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
        }
}

將enp1s0更改為自己的WAN對應的網卡。然後執行以下命令啟動nftables。

systemctl enable nftables --now

這樣LAN口下面的機器就可以通過手動配置IP連接到外網了。

然後需要使用DNSMASQ或Adguard提供DNS和DHCP服務,下一篇繼續。

使用Tensorflow庫中的mnist手寫數字數據集訓練自己的第一個視覺模型
发表评论
撰写评论