我正在尝试设置一个具有两个接口的第三层 iptables 防火墙。
我的防火墙有两个物理接口:eno0(连接到我的 ISP 网关)和 eno1(连接到我的本地网络网关)。
网络设置描述如下:
ISP gateway: aaa.aaa.127.17
|
|
| subnet: aaa.aaa.127.16/30
|
|
| eno0: aaa.aaa.127.18
-----------------------------
| |
| my firewall |
| |
-----------------------------
| eno1: 172.20.4.1
|
|
| subnet: 172.20.4.0/30
|
|
| 172.20.4.2
-----------------------------
| |
| my local gateway |
| |
-----------------------------
| bbb.bbb.137.1
|
|
| subnet: bbb.bbb.137.0/24
|
|
Laptop: bbb.bbb.137.20
(aaa.aaa.127.16/30 和 bbb.bbb.137.1/24 是公共 IP 范围)
我正在尝试(未成功)从笔记本电脑访问互联网。目前,我在 iptables 中没有过滤规则。因此问题出在路由配置上。
我1 rt2
在末尾附加了/etc/iproute2/rt_tables
以下内容,这是我的 /etc/network/interfaces 的相关部分:
auto eno0
iface eno0 inet static
address aaa.aaa.127.18
netmask 255.255.255.252
gateway aaa.aaa.127.17
auto eno1
iface eno1 inet static
address 172.20.4.1
netmask 255.255.255.252
post-up ip route add 172.20.4.0/30 dev eno1 src 172.20.4.1 table rt2
post-up ip route add bbb.bbb.137.0/24 dev eno1 src 172.20.4.1 table rt2
post-up ip route add default via 172.20.4.2 dev eno1 table rt2
post-up ip rule add from 172.20.4.1/32 table rt2
post-up ip rule add to 172.20.4.1/32 table rt2
在我的本地网关上,我有一个静态路由,将所有流量重定向到 172.20.4.1(如果目标 IP 不在 ARP 表中)。
从防火墙我可以 ping 通:
- 我的 ISP 网关(aaa.aaa.127.17)
- 谷歌(8.8.8.8)
- 我的本地网关(172.20.4.2)
但是问题是我无法从防火墙 ping 我的笔记本电脑(bbb.bbb.137.20)。
从笔记本电脑上,我可以 ping 通本地网关,但无法 ping 通防火墙。从本地网关上,我可以 ping 通防火墙,但无法 ping 通 Google。
因此,似乎我的防火墙不知道如何将流量路由到 bbb.bbb.137.0/24。我遗漏了什么?
任何帮助是极大的赞赏。
答案1
我最终找到了答案。我更改了部分内容/etc/network/interfaces
,它起作用了:
auto eno0
iface eno0 inet static
address aaa.aaa.127.18
netmask 255.255.255.252
gateway aaa.aaa.127.17
auto eno1
iface eno1 inet static
address 172.20.4.1
netmask 255.255.255.252
post-up ip route add bbb.bbb.137.0/24 via 172.20.4.2
post-up ip route add 10.0.0.0/8 via 172.20.4.2
post-up ip route add 192.168.0.0/16 via 172.20.4.2
post-up ip route add 172.16.0.0/12 via 172.20.4.2
而且,没有必要改变/etc/iproute2/rt_tables
。