按照本教程学习如何将 Ubuntu 20.04 配置为 Linux 路由器。 Linux 很棒,它可以充当“任何东西”,-:)。 就像您可以使用任何其他路由器在本地网络之间甚至到 Internet 之间路由流量一样。
将 Ubuntu 20.04 配置为 Linux 路由器
将 Linux 系统配置为用作路由器还有更多内容。 但是,在本教程中,我们将介绍如何配置 Linux 路由器以通过 WAN 接口将流量路由到 Internet,以及通过 LAN 接口在 LAN 之间路由流量。
下面是我们的基本设置图;
为 Linux 路由器分配静态 IP 地址
根据我们的设置,我们的 Linux 路由器附加了三个接口:
- enp0s3: WAN 接口,IP 为 192.168.100.101(出价,静态)
- enp0s8:局域网,172.16.0.1/24,(静态)
- enp0s9: LAN 172.16.1.1/24, (静态)
路由器上的 IP 地址详细信息
ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:df:2c:b4 brd ff:ff:ff:ff:ff:ff inet 192.168.100.101/24 brd 192.168.100.255 scope global dynamic enp0s3 valid_lft 86100sec preferred_lft 86100sec inet6 fe80::a00:27ff:fedf:2cb4/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:12:62:bf brd ff:ff:ff:ff:ff:ff inet 172.168.0.1/24 brd 172.168.0.255 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe12:62bf/64 scope link valid_lft forever preferred_lft forever 4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:66:4b:4f brd ff:ff:ff:ff:ff:ff inet 172.16.1.1/24 brd 172.16.1.255 scope global enp0s9 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe66:4b4f/64 scope link valid_lft forever preferred_lft forever
IP地址分配;
cat /etc/netplan/00-installer-config.yaml
network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: no addresses: [192.168.100.101/24] gateway4: 192.168.100.1 nameservers: addresses: - 192.168.100.1 - 8.8.8.8 enp0s8: dhcp4: no addresses: [172.16.0.1/24] enp0s9: dhcp4: no addresses: [172.16.1.1/24]
其他 LAN 服务器的 IP 地址详细信息;
主机在 172.16.1.0/24 网络上:
ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:79:66:34 brd ff:ff:ff:ff:ff:ff inet 172.16.1.10/24 brd 172.16.1.255 scope global enp0s3 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe79:6634/64 scope link valid_lft forever preferred_lft forever
cat /etc/netplan/00-installer-config.yaml
network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: no addresses: - 172.16.1.10/24 gateway4: 172.16.1.1 nameservers: addresses: - 172.16.1.1 - 8.8.8.8
主机在 172.16.1.0/24 网络上:
ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:3e:fe:0e brd ff:ff:ff:ff:ff:ff inet 172.16.0.10/24 brd 172.16.0.255 scope global noprefixroute enp0s3 valid_lft forever preferred_lft forever inet6 fe80::eb09:7797:df2d:d54b/64 scope link noprefixroute valid_lft forever preferred_lft forever
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none IPADDR=172.16.0.10 PREFIX=24 GATEWAY=172.16.0.1 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s3 UUID=ea93c07b-a40e-4e1f-a850-f97e2a762f9a DEVICE=enp0s3 ONBOOT=yes DNS1=172.16.0.1 DNS2=8.8.8.8 NM_CONTROLLED=no
这一点;
- 没有局域网设备可以访问互联网
- 只有同一局域网内的设备可以互相访问
- 没有设备可以访问不同局域网上的设备
在 Ubuntu Linux 路由器上启用内核 IP 转发
接下来,您需要启用 IP 转发,以便 Linux 路由器盒能够充当路由器,接收和转发数据包。
完成此操作后,172.16.0.0/24 和 172.16.1.0/24 上的设备应该能够通信。
要启用 IP 转发,您需要取消注释该行 net.ipv4.ip_forward=1
在 /etc/sysctl.conf
配置文件。
因此,首先检查该行是否已在配置文件中定义;
grep net.ipv4.ip_forward /etc/sysctl.conf
样本输出;
#net.ipv4.ip_forward=1
如果该行存在于配置文件和注释中,只需通过运行以下命令取消注释;
sed -i '/net.ipv4.ip_forward/s/^#//' /etc/sysctl.conf
否则,只需插入该行;
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
接下来,应用更改;
sysctl -p
通过运行以下命令检查状态;
sysctl net.ipv4.ip_forward
值应为 1。
验证两个 LAN 之间的 IP 转发。
在 Linux 路由器上配置 NAT 和转发
NATing 和转发可以使用 iptables
或通过 iptables 前端实用程序,如 UFW
.
配置数据包转发
配置从路由器 LAN 接口接收的数据包(enp0s8 和 enp0s9) 通过 WAN 接口转发,在我们的例子中是 enp0s3
.
iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
iptables -A FORWARD -i enp0s9 -o enp0s3 -j ACCEPT
同样,配置与在 WAN 接口上接收到的现有连接相关联的数据包,以转发到 LAN 接口;
iptables -A FORWARD -i enp0s3 -o enp0s8 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp0s3 -o enp0s9 -m state --state RELATED,ESTABLISHED -j ACCEPT
配置 NAT
接下来,配置NATing;
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
咨询 man iptables
想要查询更多的信息。
Save 在 Linux 中永久使用 iptables 规则
为了永久保存iptables规则,只需安装 iptables-persistent
打包并运行 iptables-save
命令如下。
apt install iptables-persistent
当前规则将在软件包安装期间保存,但此后仍然可以通过运行命令保存它们;
iptables-save > /etc/iptables/rules.v4
您的 LAN 系统现在应该能够通过 Linux 路由器连接到 Internet;
你去吧。 您的虚拟机现在可以通过您的 Linux 路由器路由流量。
我们关于如何将 Ubuntu 20.04 配置为 Linux 路由器的指南到此结束。
Linux下Firewalld的基本操作
在 KVM 上安装 pfSense 防火墙
安装和配置 Endian 防火墙 VirtualBox