我有一个运行 Arch Linux ARM 的树莓派,连接在两个接口上。它使用systemd-networkd。
eth0
连接在 DMZ 上。它有一个静态 IP,位于具有公共 IP 和端口转发的路由器后面。wlan0
已连接到 wifi 网络 (LAN)。它有一个本地ip。
我可以通过公共 ip 和本地 ip ssh 进入 pi。 pi上运行着一个web服务器,我可以通过公共ip访问ip。
但是,出于安全原因,我现在想阻止 pi 连接到本地网络。但是每当我断开 wifi 连接时,我就会失去与公共 ip(以及本地 ip 以及预期)上的 pi 的所有连接。
这是我尝试断开 wifi 的命令:
systemctl stop [email protected]
ip link set wlan0
我想知道为什么关闭 wlan0 接口也会阻止公共 IP 上任何应该通过 eth0 接口路由的连接。可能存在路由问题,如果您能帮助查明它,我将很高兴。
请查看一些可能感兴趣的命令的结果:
$ ip route show
default via 172.16.16.16 dev wlan0 proto dhcp src 172.16.16.25 metric 1024
10.0.0.0/29 dev eth0 proto kernel scope link src 10.0.0.2
172.16.16.0/24 dev wlan0 proto kernel scope link src 172.16.16.25
172.16.16.16 dev wlan0 proto dhcp scope link src 172.16.16.25 metric 1024
$ ip address show
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:1c:2b:b1 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/29 brd 10.0.0.7 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::dea6:32ff:fe1c:2bb1/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether dc:a6:32:1c:2b:b2 brd ff:ff:ff:ff:ff:ff
inet 172.16.16.25/24 brd 172.16.16.255 scope global dynamic wlan0
valid_lft 80544sec preferred_lft 80544sec
inet6 fe80::dea6:32ff:fe1c:2bb2/64 scope link
valid_lft forever preferred_lft forever
....
.... other docker related interface
答案1
问题出在通往网关的路由上。
ip route add default via gateway_ip dev eth0
解决了我的问题。