我有一个在 Ubuntu Server 22.04 上运行的虚拟路由器。虚拟路由器有两个以太网接口 enp1s0 和 enp2s0。接口 enp1s0 连接到外部网络,接口 enp2s0 连接到托管交换机。
笔记:接口 enp2s0 配置为中继流量(vlan.1201
、vlan.1401
和vlan.1601
)。
我正在尝试在虚拟路由器上设置防火墙,以阻止来自两个接口的所有传出流量,但流向 10.12.0.0/16、10.14.0.0/16、10.16.0.0/16 和 10.1.1.0/24 的流量除外。传入流量应在两个接口上都打开。因为我需要通过 ssh 进入在网络 10.14.0.0/16 (vlan.1401)、10.16.0.0/16 (vlan.1601)、10.12.0.0/16 (vlan.1201) 和 10.1.1.0/24 上运行的系统。
以下是我的 netplan 配置:
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: false
addresses:
- 10.1.1.86/24
routes:
- to: default
via: 10.1.1.251
metric: 1000
nameservers:
addresses:
- 10.1.1.252
enp2s0:
dhcp4: false
vlans:
vlan.1201:
id: 1201
dhcp4: false
addresses:
- 10.12.1.1/16
routes:
- to: 0.0.0.0
via: 10.12.1.1
metric: 100
link: enp2s0
vlan.1401:
id: 1401
dhcp4: false
addresses:
- 10.14.1.1/16
routes:
- to: 0.0.0.0
via: 10.14.1.1
metric: 100
link: enp2s0
vlan.1601:
id: 1601
dhcp4: false
addresses:
- 10.16.1.1/16
routes:
- to: 0.0.0.0
via: 10.14.1.1
metric: 100
link: enp2s0
以下是我的 iptable 规则:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED -j ACCEPT
以下是 NAT 规则
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o enp1s0 -j MASQUERADE
我尝试配置 Ubuntu UFW 来解决上述问题的一部分。我将默认设置设置为允许所有出站和入站流量。然后,我尝试拒绝来自 10.16.0.0/16 的所有出站流量,但流向选定列表的流量除外。
以下是我使用的配置:
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), allow (routed)
New profiles: skip
To Action From
-- ------ ----
10.16.0.0/16 ALLOW IN Anywhere
Anywhere DENY OUT 10.16.0.0/16
10.1.1.0/24 ALLOW OUT 10.16.0.0/16
10.16.0.0/16 ALLOW OUT 10.16.0.0/16
10.14.0.0/16 ALLOW OUT 10.16.0.0/16
10.14.1.1 ALLOW OUT 10.16.0.0/16
10.16.1.1 ALLOW OUT 10.16.0.0/16
10.12.1.1 ALLOW OUT 10.16.0.0/16
10.1.1.86 ALLOW OUT 10.16.0.0/16
10.12.0.0/16 ALLOW OUT 10.16.0.0/16
Anywhere DENY OUT 10.1.1.0/24
Anywhere DENY OUT 10.12.0.0/16
Anywhere DENY OUT 10.14.0.0/16
Anywhere DENY OUT 10.1.1.86
10.16.0.0/16 ALLOW OUT 10.1.1.86
10.16.0.0/16 ALLOW OUT 10.1.1.0/24
但是,使用以下防火墙配置,我仍然能够 ping google.com 并 curl 各种网页。
我还尝试拒绝所有传出流量并允许所有传入流量,然后开放到选定子网 10.14.0.0/16 和 10.16.0.0/16 的传出流量,但是,这阻止我通过 SSH 连接到这些子网上的任何系统。
任何建议将不胜感激。