大局:我需要建立一个自动测试环境,让我测试端口扫描工具。
这是我用作游乐场的 github 存储库:https://github.com/WojciechMigda/tested-scanners
我有什么:
snmpd
,连接到自定义ipv4和ipv6网络net-snmpd
,连接到br-snmpd
主机接口。ping
和 ping6
一个来自主机的容器。nmap
可以在 ipv4 和 ipv6 网络上执行端口 161 的完整性扫描。注意:nmap
在 IP 层级别运行。它向br-snmpd
接口发送IP探测数据包。问题:
我也在运行
masscan
来执行端口扫描。与nmap
相反,masscan
在以太网层上运行。默认情况下,当未明确指定接口时,masscan
使用主机的 eth0 接口。选择此接口是因为默认路由通向它。不幸的是,masscan
未能检测到容器上的开放端口。
但是,
masscan
也可以通过指定网络接口(br-snmpd
而不是 eth0
)和相关路由器的 MAC 来运行。通过这样的设置,masscan
成功地检测了容器上的端口。
我尝试更改不同的东西,但我找不到丢失的部分 - 需要额外配置什么才能让
masscan
通过 eth0
界面成功扫描容器上的端口?
我想实现的另一个设置是配置网络接口,以便有另一个默认路由通向容器的网络,允许
masscan
使用br-snmpd
接口而无需手动指定路由器的MAC地址,或者容器' 以这样的方式配置的接口,它们将作为主机的 LAN 接口可见(我认为 docker 的macvlan
功能将允许这样做,但我不确定)。
docker-compose.yml
:https://github.com/WojciechMigda/tested-scanners/blob/main/tests/resources/docker-compose.yml
github 操作流程:https://github.com/WojciechMigda/tested-scanners/blob/main/.github/workflows/test.yml
工作流程运行之一:https://github.com/WojciechMigda/tested-scanners/actions/runs/4813378705/jobs/8569841427
ip -4 addr
ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 10.1.24.5/16 metric 100 brd 10.1.255.255 scope global eth0
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
4: br-snmpd: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
inet 10.9.0.1/24 brd 10.9.0.255 scope global br-snmpd
valid_lft forever preferred_lft forever
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 fe80::6245:bdff:fe7a:4922/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 state DOWN
inet6 2001:db8:1::1/64 scope global tentative
valid_lft forever preferred_lft forever
inet6 fe80::1/64 scope link tentative
valid_lft forever preferred_lft forever
4: br-snmpd: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
inet6 2001:db8:1:1::1/120 scope global
valid_lft forever preferred_lft forever
inet6 fe80::42:31ff:fed7:61d3/64 scope link
valid_lft forever preferred_lft forever
inet6 fe80::1/64 scope link
valid_lft forever preferred_lft forever
6: veth58fff89@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
inet6 fe80::14f4:fcff:fe3c:2b8a/64 scope link
valid_lft forever preferred_lft forever
8: veth55e96c9@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
inet6 fe80::d471:a4ff:febf:8273/64 scope link
valid_lft forever preferred_lft forever
ip -4 route
ip -6 route
default via 10.1.0.1 dev eth0 proto dhcp src 10.1.24.5 metric 100
10.1.0.0/16 dev eth0 proto kernel scope link src 10.1.24.5 metric 100
10.1.0.1 dev eth0 proto dhcp scope link src 10.1.24.5 metric 100
10.9.0.0/24 dev br-snmpd proto kernel scope link src 10.9.0.1
168.63.129.16 via 10.1.0.1 dev eth0 proto dhcp src 10.1.24.5 metric 100
169.254.169.254 via 10.1.0.1 dev eth0 proto dhcp src 10.1.24.5 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
::1 dev lo proto kernel metric 256 pref medium
2001:db8:1::/64 dev docker0 proto kernel metric 256 linkdown pref medium
2001:db8:1::/64 dev docker0 metric 1024 linkdown pref medium
2001:db8:1:1::/120 dev br-snmpd proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev docker0 proto kernel metric 256 linkdown pref medium
fe80::/64 dev br-snmpd proto kernel metric 256 pref medium
fe80::/64 dev veth58fff89 proto kernel metric 256 pref medium
fe80::/64 dev veth55e96c9 proto kernel metric 256 pref medium