Ответы пользователя по тегу Сетевое администрирование
  • Увидит ли кто-то мой реальный мак адрес?

    EvilMan
    @EvilMan
    Ваш реальный мак-адрес доступен и виден только в пределах того же широковещательного сегмента, в котором вы находитесь. Дальше уже ваш мак-адрес не будет виден, а будет виден мак-адрес оборудования провайдера. Разве что в логах останется где-нибудь. За подробностями рекомендую обратиться к Таненбауму или к Олиферам.
    Ответ написан
    Комментировать
  • Настройка Mikrotik: 1 провайдер выдаёт 2 IP, которые нужно разделить на две сети/интерфейса

    EvilMan
    @EvilMan
    Покажите конфиг что ли. По описанию, всё правильно делаете. Но раз не работает, значит что-то упустили из виду. Адреса из одной подсети или из разных? Если из одной, то никакого PBR не нужно, а просто по метке делать НАТ в нужный адрес (вместо masquerade используйте src-nat). Если же выданные провайдером адреса из разных подсетей (с разными шлюзами), то тогда Вам действительно нужно PBR, но там просто добавляется по отдельному маршруту с меткой на каждый шлюз.
    Ответ написан
    5 комментариев
  • Можно ли сделать роутер из такого покоцанного Линукса?

    EvilMan
    @EvilMan
    Можно делать NAT и без iptables. Но это будет stateless nat: один в один. Правда ядро 2.4, не уверен, что в нём поддержка это включена.
    Ответ написан
    Комментировать
  • Где маркировать пакеты в iptables, если надо макировать ответ после SNAT и фильтровать по исходному IP (до SNAT)?

    EvilMan
    @EvilMan
    Если нужно отбирать пакеты по оригинальным адресам (до трансляции), то можно использовать модуль сопоставления (match) conntrack.
    Краткая справка опций данного сопоставления (можно посмотреть по iptables -m conntrack --help как и для всех других типов сопоставлений):
    [!] --ctstate {INVALID|ESTABLISHED|NEW|RELATED|UNTRACKED|SNAT|DNAT}[,...]
                                   State(s) to match
    [!] --ctproto proto            Protocol to match; by number or name, e.g. "tcp"
    [!] --ctorigsrc address[/mask]
    [!] --ctorigdst address[/mask]
    [!] --ctreplsrc address[/mask]
    [!] --ctrepldst address[/mask]
                                   Original/Reply source/destination address
    [!] --ctorigsrcport port
    [!] --ctorigdstport port
    [!] --ctreplsrcport port
    [!] --ctrepldstport port
                                   TCP/UDP/SCTP orig./reply source/destination port
    [!] --ctstatus {NONE|EXPECTED|SEEN_REPLY|ASSURED|CONFIRMED}[,...]
                                   Status(es) to match
    [!] --ctexpire time[:time]     Match remaining lifetime in seconds against
                                   value or range of values (inclusive)
        --ctdir {ORIGINAL|REPLY}   Flow direction of packet


    Но маркировать после SNAT не получится, так как nat выполняется в nat/POSTROUTING уже ПОСЛЕ mangle/POSTROUTING (диаграмма прохождения пакетов через Netfilter). При этом решение о маршрутизации принимается до SNAT, уже пытаться маршрутизировать пакеты в другую таблицу после SNAT неправильно. Может расскажете подробнее схему?
    Ответ написан
    Комментировать
  • Как настроить one-to-one на subinterface в Shorewall'е?

    EvilMan
    @EvilMan
    Если Вам необходимо использовать nat 1:1, то используйте stateless nat с помощью утилиты ip. Например так:
    ip route add nat <IP_B> via 1.1.1.1
    ip rule add nat <IP_B> from 1.1.1.1
    
    Ответ написан
    Комментировать
  • Фильтрация пакетов в bridge (iptables,ebtables)

    EvilMan
    @EvilMan
    И так, подробный отчёт о тесте.
    Из железа под рукой оказалось пара голосовых шлюзов, которые будут использоваться в роли конечных устройств (адреса 192.168.253.1 и 192.168.253.2), и управляемый свитч. Запихиваем каждый из аддпаков в отдельный влан, настраиваем привязку портов к вланам на коммутаторе и начинаем эксперимент.

    1. На машинке создаём бридж-интерфейс и два влана, запихиваем вланы в бридж, поднимаем всё, прописываем адрес на бридж-интерфейсе:
    brctl addbr br0
    ip l add l eth2 name eth2.10 type vlan id 10
    ip l add l eth2 name eth2.11 type vlan id 11
    ip l s up dev br0
    ip l s up dev eth2.10
    ip l s up dev eth2.11
    ip a add 192.168.253.3/29 dev br0
    


    2. Устанавливаем переменные sysctl, при этом не будет никакой фильтрации:
    sysctl -w net.bridge.bridge-nf-call-iptables=0
    sysctl -w net.bridge.bridge-nf-filter-vlan-tagged=0
    


    3. Проверяем связность между устройствами в разных портах моста и хостовой машиной (пингуем остальные адреса с аддпака 192.168.253.1/29):
    test-addpac-1# ping 192.168.253.2
    PING 192.168.253.2 (192.168.253.2): 56 data bytes
    64 bytes from 192.168.253.2: icmp_seq=0 ttl=64 time=10 ms
    64 bytes from 192.168.253.2: icmp_seq=1 ttl=64 time=10 ms
    64 bytes from 192.168.253.2: icmp_seq=2 ttl=64 time=10 ms
    64 bytes from 192.168.253.2: icmp_seq=3 ttl=64 time=10 ms
    
    --- 192.168.253.2 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss'
    round-trip min/avg/max = 10/10/10 ms
    test-addpac-1# ping 192.168.253.3
    PING 192.168.253.3 (192.168.253.3): 56 data bytes
    64 bytes from 192.168.253.3: icmp_seq=0 ttl=64 time=15 ms
    64 bytes from 192.168.253.3: icmp_seq=1 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=2 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=3 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=4 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=5 ttl=64 time=5 ms
    
    --- 192.168.253.3 ping statistics ---
    6 packets transmitted, 6 packets received, 0% packet loss'
    round-trip min/avg/max = 5/6/15 ms
    

    Как видно, всё работает.

    4. Устанавливаем переменную для того, чтобы трафик между портами попадал в iptables, и добавляем правило в файерволл для блокировки трафика между двумя устройствами с заданными адресами:
    sysctl -w net.bridge.bridge-nf-call-iptables=1
    iptables -A FORWARD \
      --src 192.168.253.1 --dst 192.168.253.2 \
      -j DROP
    

    И проверяем так же с помощью пинга:
    test-addpac-1# ping 192.168.253.2 
    PING 192.168.253.2 (192.168.253.2): 56 data bytes
    
    --- 192.168.253.2 ping statistics ---
    5 packets transmitted, 0 packets received, 100% packet loss'
    test-addpac-1# ping 192.168.253.3
    PING 192.168.253.3 (192.168.253.3): 56 data bytes
    64 bytes from 192.168.253.3: icmp_seq=0 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=1 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=2 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=3 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=4 ttl=64 time=5 ms
    
    --- 192.168.253.3 ping statistics ---
    5 packets transmitted, 5 packets received, 0% packet loss'
    round-trip min/avg/max = 5/5/5 ms
    

    И проверяем счётчики в iptables (в динамике вы увидите, как они инкрементируются):
    anton@insider:~$ sudo iptables -L FORWARD 8 -n -v
      455 38220 DROP  all  --  *  *   192.168.253.1  192.168.253.2 
    


    Итого: вот примерно так можно фильтровать трафик между портами моста, обходясь совершенно без ebtables. Чтобы фильтровать трафик между портами с учётом интерфейса, то необходимо использовать расширение physdev примерно так:
    iptables -A FORWARD -m physdev \
      --physdev-in eth2.10 --physdev-out eth2.11 \
      --src 192.168.253.1 --dst 192.168.253.2 \
      -j DROP
    


    Так же следует учесть, что ebtables так же умеет фильтрацию по полям заголовков L3, если соответствующие модули загружены.

    Можно сделать тоже самое с помощью ebtables:
    ebtables -A FORWARD -p ip \
    --ip-source 192.168.253.1 --ip-destination 192.168.253.2 \
    -j DROP
    


    Как видите, для фильтрации вовсе не нужно указывать мак-адреса. Подробные сведения о модулях ebtables вы сможете найти в мане. Так же будет полезно поиграться с tcpdump на бриджах и бридж-портах при фильтрации — вы увидите, что на один порт моста приходит трафик, но не пересылается в другой порт.
    Ответ написан
    3 комментария
  • Фильтрация пакетов в bridge (iptables,ebtables)

    EvilMan
    @EvilMan
    1. Для того, чтобы можно было с помощью iptables фильтровать трафик, проходящий транзитом через мост необходимо выставить следующие системные переменные sysctl:
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    

    2. После того как установите переменные sysctl, можно использовать для этого iptables, используя сопоставление (match) -m physdev --physdev-in / --physdev-out
    3. См. предыдущий ответ.
    Как-то так.
    Ответ написан
    6 комментариев
  • Как правильно настроить OpenVPN для последовательной маршрутизации трафика через два сервера?

    EvilMan
    @EvilMan
    Достаточно клиентам отдать маршрут через первый сервер (сервер 1), а на серверах 1 и 2 настроить маршрутизацию. Нат нужно настраивать только на сервере 2, через который трафик уже в интернет уходит.
    На первом сервере:
    ip route add default via <server2-ip> dev tunX table 10
    ip rule add from <clients-net> lookup 10 pref 10
    

    На втором сервере надо будет уже настроить НАТ и прописать маршрут до клиентских сетей через сервер 1
    ip route add <clients-net> via <server1-ip> dev tunY
    iptables -t nat -A POSTROUTING --src <clients-net> -o <extiface> \
      -j SNAT --to-source <extip>
    

    Вот как-то так.
    Ответ написан
    Комментировать
  • Помогите определится с выбором оборудования Cisco

    EvilMan
    @EvilMan
    Ethernet-коммутаторов с е1 не бывает в природе. Вам нужен будет маршрутизатор для того, чтобы терминировать е1. А коммутаторы на 10г отдельно брать.
    Ответ написан
    Комментировать