Почему IP-адрес источника изменился после прохождения ICMP через мост Linux?

В вашем случае, я думаю, самое близкое, что вы можете получить, это что-то вроде:

%operator ALL = /bin/cat /var/log/messages*, !/bin/cat /var/log/messages*\ *

, который сначала разрешает /bin/cat только если у него есть какая-либо "строка аргумента", начинающаяся с /var/log/messages, а затем запрещает ту же самую "строку аргумента", если в любой точке есть пробел.

Это практически запрещает множественные аргументы для cat, но, будучи основанным на "целой строке", не позволяет sudo cat /var/log/messages /var/log/messages.1настолько, насколько не позволяет sudo cat /var/log/messages /etc/shadow. Кроме того, это не позволяет допустимому имени файла иметь пробел, например. гипотетический файл /var/log/messages-with-' '-space.

0
11.09.2021, 06:21
2 ответа

Чтобы все заработало, вам нужно создать 2 пары vethпайпов. С одного конца они должны быть включены в мост. Мост и концы интерфейсов veth расположены в пространстве имен корневой сети. Другие концы каналов v1 и v2 находятся в пространстве имен n1 и пространстве имен n2 соответственно. Пример:

ip netns add n1
ip netns add n2

Концы, включенные в перемычку, будем называть bv1 и bv2:

ip link add v1 netns n1 type veth peer name bv1
ip link add v2 netns n2 type veth peer name bv2
ip link add br0 type bridge
ip link set br0 up
ip link set bv1 master br0
ip link set bv2 master br0
ip link set bv1 up
ip link set bv2 up
brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.d2dba1636571   no          bv1
                                        bv2

Перейти к n1:

nsenter --net=/var/run/netns/n1
ip addr add 192.168.0.2/16 dev v1
ip link set v1 up
ip link set lo up
exit

Перейти к n2:

nsenter --net=/var/run/netns/n2
ip addr add 192.168.0.3/16 dev v2
ip link set v2 up
ip link set lo up
exit

Результат:

ip netns exec n1 ping -c2 -I v1 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.265 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.220 ms

ip netns exec n2 ping -c2 -I v2 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.195 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.227 ms
1
12.09.2021, 20:41

IP-источник изменился, так как пакет прошел настройку NAT с iptables с помощью докера.

Это сделано потому, что другие машины в вашей сети (и в Интернете )не знают, где найти IP-адреса внутри вашей сети докеров. Поэтому вместо каждого исходящего пакета он изменился на IP-адрес вашего хост-компьютера.

0
13.09.2021, 06:55

Теги

Похожие вопросы