学习
实践
活动
专区
工具
TVP
写文章
专栏首页梵高先生闲置台式机(Linux Debian)制作家用网关出口设备
原创

闲置台式机(Linux Debian)制作家用网关出口设备

Debian Linux路由器配置

查看网卡信息

  • 首先查看网络设备地址列表lspci -vvv | grep Ethernet

01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)

    Subsystem: Dell RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

02:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

02:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

共有三个网口:01:00.0 02:00.0 02:00.1

Gigabit是数据存储的单位,通常用符号Gbit或Gb表示,它的换算公式:1 Gb = 10的9次方 bits = 1,000,000,000 bits

另一个常见的单位是Gibibit,gibibit是用来表示二进制换算的,1 gibibit = 2的30次方 bits = 1,073,741,824 bits

  • 查看物理网卡名ip link show

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000

link/ether e4:54:e8:cf:c2:11 brd ff:ff:ff:ff:ff:ff

3: enp2s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master br0 state DOWN mode DEFAULT group default qlen 1000

link/ether 6c:b3:11:1c:ee:f6 brd ff:ff:ff:ff:ff:ff

4: enp2s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master br0 state DOWN mode DEFAULT group default qlen 1000

link/ether 6c:b3:11:1c:ee:f7 brd ff:ff:ff:ff:ff:ff

5: wlp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000

link/ether 2e:5e:a1:2e:fa:93 brd ff:ff:ff:ff:ff:ff

共有4个物理网卡,其中三个有线网卡(enp1s0, enp2s0f0, enp2s0f1),一个无线网卡(wlp3s0)

  • 查看每个网卡支持的带宽# 安装ethtool sudo apt install ethtool

查看网卡详情

ethtool enp1s0

Supported link modes: 10baseT/Half 10baseT/Full

                  100baseT/Half 100baseT/Full 
                  1000baseT/Full

enp1s0, enp2s0f0, enp2s0f1三个网卡均支持1000baseT/Full,即全部是千兆网卡

设置网桥

sudo vim /etc/network/interfaces

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback

# 上外网的网卡
# The primary network interface
auto enp1s0
allow-hotplug enp1s0
iface enp1s0 inet dhcp

# 内网进行dhcp分配的网卡,桥接为br0
auto br0 
iface br0 inet static
address 192.168.152.254
netmask 255.255.255.0
network 192.168.152.0
broadcast 192.168.152.255
gateway 192.168.152.254
dns-nameservers 211.148.192.141,211.148.192.151,202.96.128.166,202.96.134.133
bridge_ports enp2s0f0 enp2s0f1
bridge_stp off 
bridge_maxwait 0

# 重启网络
sudo /etc/init.d/networking restart

配置Debian系统,允许内核进行路由转发

sudo vim /etc/sysctl.conf

net.ipv4.ip_forward = 1 #0为关闭,1为开启

# 是配置生效
sudo sysctl -p

配置DHCP服务

# 安装DHCP服务
sudo apt-get install isc-dhcp-server

# 设置监听网口
sudo vim /etc/default/isc-dhcp-server
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#   Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="br0"
INTERFACESv6="br0"

# 设置分配子网ip的信息
sudo vim /etc/dhcp/dhcpd.conf

option domain-name "dfxd_debian10.org";
option domain-name-servers 211.148.192.141,211.148.192.151,202.96.128.166,202.96.134.133;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.152.0 netmask 255.255.255.224 {
  range 192.168.152.100 192.168.152.200;
  option routers 192.168.152.254;
  option broadcast-address 192.168.152.255;
  default-lease-time 600;
  max-lease-time 7200;
}

# 设置mac与ip进行绑定,可以不设置
host debian-node{
    hardware ethernet 6c:b3:11:1c:ee:f6;
    fixed-address 192.168.152.254;
}

# 手动启动DHCP
/usr/sbin/dhcpd -t $VERSION -cf /etc/dhcp/dhcpd.conf

# 开机自动启动
sudo rm -rf /var/run/dhcpd.pid
sudo systemctl enable isc-dhcp-server

# 查看进程是否已经启动
sudo netstat -uap | grep 'dhcp*'

配置SNAT IPTABLES规则

vim router_setup.sh

# 允许内核进行路由转发
echo 1 >> /proc/sys/net/ipv4/ip_forward

# 清空nat表和filter表
iptables -t nat -F
iptables -t filter -F

# INPUT链进行规则设置,只允许内网的IP进来,外网主动访问的IP一律丢弃
# 丢弃外网主动访问的包
iptables -I INPUT -p tcp -s 0.0.0.0/0 -j DROP
iptables -I INPUT -p udp -s 0.0.0.0/0 -j DROP

# 允许内网IP访问
iptables -I INPUT -p tcp -s 192.168.0.0/16 -j ACCEPT 
iptables -I INPUT -p tcp -s 172.16.0.0/16 -j ACCEPT 
iptables -I INPUT -p tcp -s 10.0.0.0/16 -j ACCEPT 
iptables -I INPUT -p tcp -s 127.0.0.0/16 -j ACCEPT 

ptables -I INPUT -p udp -s 192.168.0.0/16 -j ACCEPT 
iptables -I INPUT -p udp -s 172.16.0.0/16 -j ACCEPT 
iptables -I INPUT -p udp -s 10.0.0.0/16 -j ACCEPT 
iptables -I INPUT -p udp -s 127.0.0.0/16 -j ACCEPT 

# 设置DNS的端口放通
iptables -I INPUT -p tcp --sport 53 -s 0.0.0.0/0 -m state --state ESTABLISHED -j ACCEPT 
iptables -I INPUT -p udp --sport 53 -s 0.0.0.0/0 -m state --state ESTABLISHED -j ACCEPT 

# apt-get端口放通
iptables -I INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

# 允许ICMP协议
iptables -A INPUT -p icmp --icmp 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp 0 -j ACCEPT

# SNAT转换规则,基于网口来转换
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 ! -d 192.168.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 ! -d 172.16.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 ! -d 10.0.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 ! -d 127.0.0.0/16 -o enp1s0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 172.16.0.0/16 ! -d 192.168.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 ! -d 172.16.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 ! -d 10.0.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 ! -d 127.0.0.0/16 -o enp1s0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 10.0.0.0/16 ! -d 192.168.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.0.0/16 ! -d 172.16.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.0.0/16 ! -d 10.0.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.0.0/16 ! -d 127.0.0.0/16 -o enp1s0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 127.0.0.0/16 ! -d 192.168.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 127.0.0.0/16 ! -d 172.16.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 127.0.0.0/16 ! -d 10.0.0.0/16 -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 127.0.0.0/16 ! -d 127.0.0.0/16 -o enp1s0 -j MASQUERADE


# 查看规则
sudo iptables -t filter -L -n -v
sudo iptables -t nat -L -n -v

配置开机启动脚本任务

sudo vim /usr/lib/systemd/system/router_setup.service

[Unit]
Description=Become a router
After=network.target

[Service]
Type=oneshot
ExecStart=/home/bowenerchen/Tools/router_setup.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

# 设置开机自启动
sudo systemctl daemon-reload
sudo systemctl enable router_setup.service

大致的网络拓扑:

简易网络拓扑

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 2017 linux版本排行榜,最好用的linux在这里

    Linux的阵营日益壮大,每一款发行版都拥有一大批用户,开发者自愿为相关项目投入精力。Linux发行版可谓是形形色色,它们旨在满足每一种能想得到的需求。 本文就...

    小小科
  • 三星对DeX上Linux系统的支持失败

    在上周给Beta测试人员的一封电子邮件中,三星表示将不支持其Linux on DeX beta程序用于将来的操作系统和设备版本。

    shellmik
  • hostapd配置

    我们有个闲置的USB无线适配器(WIFI适配器),而我们的ISP路由器却是有线的。怎样把我们的家庭NAS服务器变成无线访问点(WAP),在不用买额外的WPA盒子...

    全栈程序员站长
  • 玩客云刷机刷入Armbian系统 教程

    玩客云是一款前些年很火的矿机,曾经在官网售卖¥599,现在已经沦落到¥45包邮的田地了。当时我还靠着玩客云赚钱了好几百呢,高中的时候。

    zeruns
  • 每天5分钟成为老司机 (3) 只羡WiFi不羡仙

    上回说到,利用Windows 2000及以后版本的“Internet连接共享”功能,或Linux的fwdd和iptables,能够实现让局域网内多个用户共享一个...

    用户8289326
  • Linux虚拟网络设备bridge你真搞懂了吗?

    首先,bridge是一个虚拟网络设备,所以具有网络设备的特征,可以配置IP、MAC地址等;其次,bridge是一个虚拟交换机,和物理交换机有类似的功能。

    公众号: 云原生生态圈
  • 树莓派入门(一)—— 树莓派4B介绍

    树莓派由注册于英国的慈善组织“Raspberry Pi 基金会”开发,Eben·Upton/埃·厄普顿为项目带头人。2012年3月,英国剑桥大学...

    全栈程序员站长
  • Linux 虚拟网络设备之 bridge

    首先,bridge是一个虚拟网络设备,所以具有网络设备的特征,可以配置IP、MAC地址等;其次,bridge是一个虚拟交换机,和物理交换机有类似的功能。

    杰哥的IT之旅
  • 树莓派:开机使用

    树莓派是一款信用卡大小的超小型电脑,由英国的树莓派基金会研发。由于超小的体积,树莓派从2012年发行起就风靡全球。别看树莓派身板小,它可是一台功能完整的电脑。连...

    Vamei
  • 树莓派:开机使用

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。

    Vamei
  • 廉价的家用工作站方案:前篇

    在 2021 年第三个季度开始,我又下单了一台设备,作为已有资源的补充。在新设备到来之前,正好对已经运行了一个季度时间的“老设备”做下总结和分享。

    soulteary
  • 廉价的家用工作站方案:前篇

    在 2021 年第三个季度开始,我又下单了一台设备,作为已有资源的补充。在新设备到来之前,正好对已经运行了一个季度时间的“老设备”做下总结和分享。

    soulteary
  • linux之网络管理

    图中ens33表示的是以太网的网卡,inet表示其网络地址,netmask是其子网掩码。

    用户9628320
  • 最佳 Linux 发行版汇总

    Ubuntu是一款基于Debian发行版,以Unity作为默认桌面环境的Linux操作系统。他是世界上最流行的发行版之一,最新发行版为桌面、移动及其桌面移动混合...

    小小科
  • 最佳 Linux 发行版汇总

    Linux入门 Ubuntu Ubuntu是一款基于Debian发行版,以Unity作为默认桌面环境的Linux操作系统。他是世界上最流行的发行版之一,最新发...

    小小科
  • 黑苹果,你准备好了吗

    黑苹果、是把苹果公司出品的macOS操作系统在x86架构的非苹果电脑上运行的黑客协作计划。此计划的构思始于2005年6月的苹果全球开发者大会(WWDC 2005...

    海哥@开发
  • AMD 5800u 笔记本折腾 Proxmox VE 7.0 虚拟化

    之前在《廉价的家用工作站方案:前篇》一文中,我提到过使用两台笔记本设备作为轻量的家用工作站。

    soulteary
  • 一键伪装成Win 10,Kali Linux 2019年最终版重磅功能预览

    11月26日,Kali Linux官网宣布了2019年第四个也是最后一个版本——Kali Linux 2019.4。相比之前有较大的变动,引起了很多安全爱好者的...

    FB客服
  • 为了随时随地能敲代码,他用树莓派手搓一台 Linux掌上电脑

    至于这么做的目的,他说,希望自己能在朋友家、工作室都能随时随地抄起电脑敲代码搞事情。

    入门笔记

扫码关注腾讯云开发者

领取腾讯云代金券