将Ubuntu 20.04配置为Linux路由器

遵循本教程,学习如何将Ubuntu 20.04配置为Linux路由器。 Linux很棒,它可以充当“任何东西”,-:)。就像您可以使用任何其他路由器在本地网络之间,甚至到Internet之间路由流量一样。

将Ubuntu 20.04配置为Linux路由器

还需要配置Linux系统以充当路由器。但是,在本教程中,我们将介绍如何配置Linux路由器以通过WAN接口将流量路由到Internet,以及如何通过LAN接口在LAN之间路由流量。

下面是我们的基本设置图;

将静态IP地址分配给Linux路由器

按照我们的设置,我们的Linux路由器具有三个接口:

  • enp0s3:IP地址为192.168.100.101的WAN接口(已出价,静态)
  • enp0s8:LAN,172.16.0.1/24,(静态)
  • enp0s9:局域网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

在此刻;

  • 没有局域网设备可以访问互联网
  • 只有同一LAN上的设备可以互相访问
  • 没有设备可以访问其他LAN上的设备

将Ubuntu 20.04配置为Linux路由器

在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转发。

将Ubuntu 20.04配置为Linux路由器

在Linux路由器上配置NAT和转发

NAT和转发可以使用 iptables 或通过iptables前端实用程序(如 UFW

配置数据包转发

配置从路由器LAN接口接收的数据包(enp0s8enp0s9)通过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 想要查询更多的信息。

在Linux中永久保存iptables规则

为了永久保存iptables规则,只需安装 iptables-persistent 打包并运行 iptables-save 命令如下。

apt install iptables-persistent

当前规则将在软件包安装期间保存,但是在以后仍然可以通过运行命令保存它们;

iptables-save > /etc/iptables/rules.v4

您的局域网系统现在应该可以通过Linux路由器连接到Internet了;

将Ubuntu 20.04配置为Linux路由器

然后你去。您的vm现在可以通过Linux路由器路由流量了。

到此,我们结束了有关如何将Ubuntu 20.04配置为Linux路由器的指南。

其他教程

Linux中Firewalld的基本操作

在KVM上安装pfSense防火墙

在VirtualBox上安装和配置Endian防火墙

Sidebar