eth0をdockerカスタムネットワークに関連付ける方法

eth0をdockerカスタムネットワークに関連付ける方法

全体的な状況:ポートスキャンツールをテストするための自動化されたテスト環境を構築する必要があります。

これは私が遊び場として使用するgithubリポジトリです。https://github.com/WojciechMigda/tested-scanners

私が持っているもの:

  • 2つの(より多くの)コンテナが実行されており、カスタムsnmpdipv4およびipv6ネットワークに接続され、ホストインターフェイスnet-snmpdに接続されています。br-snmpd
  • ホストのコンテナpingで作業できます。ping6
  • nmapポート161の健全性チェックは、ipv4およびipv6ネットワークを介して実行できます。注:nmapIP層レベルで機能します。 IPプローブパケットをbr-snmpdインターフェイスに送信します。

質問:

masscanポートスキャンもしています。nmap masscanイーサネット層で動作するのと反対です。デフォルトでは、インターフェイスが明示的に指定されていない場合は、masscanホストのeth0インターフェイスが使用されます。このインターフェイスは、デフォルトパスがこのインターフェイスに接続されるために選択されました。残念ながらmasscan、コンテナの開いているポートを検出できません。

ただし、masscanネットワークインターフェイス(br-snmpd代わりに)と関連ルータのMACを指定してeth0実行することもできます。この設定を有効にすると、masscanコンテナのポート検出が成功します。

いくつかの変更を試しましたが、欠落している部分が見つかりませんでした。masscanインターフェイスを介してコンテナのポートを正常にスキャンするには、追加の設定が必要ですかeth0

私が実装したいもう一つの設定は、ルータ(ゲートウェイ?)を接続して作業インターフェイスとして選択したbr-snmpd場合、null以外のルータIPアドレスのルータMACを取得しようとすることです。br-snmpdmasscan

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

ワークフローの1つが実行されます。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

答え1

eth0設計上、コンテナへのトラフィックが無効になっていることがわかりました。

さらに、しばらくすると、コンテナ内でスキャナを実行し、スキャン対象をLANコンテナで実行するか、ピアルータを介して接続された別々のbirdネットワークで実行する方が便利でより良い解決策であることに気づきました。

関連情報