LINUX.ORG.RU
ФорумAdmin

Две сети на одном адаптере - где выход?


0

2

приветствую всех.

Имеется компьютер с одним eth адаптером работающий как шлюз и имеется несколько компьютеров которым надо раздать интернет. т.е. интернет приходит с адреса 192.168.0.1 (винда как шлюз в сотовый USB модем) и отдается с адреса 192.168.1.254 всем компьютерам сети 192.168.1.0/24 Вариант с eth0:0,eth0:1 не предлагать потому что маршрутизация не идет, хостам из 192.168.1.* шлется редирект на 192.168.0.1 которого они не видят и не должны. Трафик надо пускать через роутер.

В общем надо сделать своего рода бридж наоборот. Несколько полноценных логических сетевых интерфейса свести в один физический.

★★

Поставить виртуалок и в бридж их :).

А если серьёзно, проблема известная, но я не очень помню как она решается. На лоре это уже обсуждалось, попробуй поискать.

true_admin ★★★★★ ()

Поднять VLAN'ы, настроить роутинг между ними. Вроде, все.

BigAlex ★★★ ()
Ответ на: комментарий от power

мне кажется можно без реструкторизации сети через iptables сделать.

true_admin ★★★★★ ()

icmp Редиректы нужно отключить. Если сильно хочется много интерфейсов -mac2vlan

ventilator ★★★ ()

Спокойно работал с тремя подсетями с одного интерфейса. Думаю, всё же не нужно так быстро отказываться от алиасов.

fractaler ★★★★★ ()

Вроде dummy-интерфейсы можно для такого использовать.

thesis ★★★★★ ()

Еще можно через ВПН сделать.

Galant ()

если это то о чём я думаю, то я делал через бродкаст.

NemesisSOAD ()

Данная проблема вполне решаема с помощью iptables и алиасов.

# ip addr list
...
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UNKNOWN qlen 1000
    link/ether 54:e6:fc:83:77:73 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.1/24 brd 172.16.0.255 scope global eth3
    inet 172.16.1.1/24 brd 172.16.1.255 scope global eth3:0
    inet 172.16.2.1/24 brd 172.16.2.255 scope global eth3:1
...
# ip ro list
...
172.16.0.0/24 dev eth3  proto kernel  scope link  src 172.16.0.1
172.16.1.0/24 dev eth3  proto kernel  scope link  src 172.16.1.1
172.16.2.0/24 dev eth3  proto kernel  scope link  src 172.16.2.1
...

Но! У меня вопрос к уважаемому сообществу, как завести на одной реальной сетевой карте несколько виртуальных со своими маками? Пробовал tap в мост с eth - устройство создается, в мост добавляется, в таблице маршрутизации добавляются маршруты, но сам интерфейс tun не в состоянии RUNNING и как следствие все это дело не работает. (debian squeeze)

mihbel ()
Ответ на: комментарий от ukr_unix_user

Ага, и засунь скажем в MicroITX машинку....

Сабж. Все можно по разному решить но хочется максимально правильного решения и у меня есть воспоминание что оно есть. Можно и тэгированных VLAN понаделать и в бридж объединить но это будет умножение трафика, чего хочется избежать.

n0mad ★★ ()
Ответ на: комментарий от true_admin

в смысле? У тебя и так любой пакет по кабелю будет проходить два раза.

Согласен, это я перегнул. Умножаться то будет лишь бродкаст трафик. Придет пакет скажем на eth0 и разошлется на vlan1... vlanX уйдя в тот же eth0. Загоняюсь. Видимо это и есть то решение что использовал в «прошлой жизни» :)

Помнится был ньюанс с promiscuous режимом в который сетевка загоняется когда исполняется tcpdump. Исполнение tcpdump на eth0 помнится вело к тому что весь трафик приходящий уходил по мосту и тут же приходил снова и снова множился. Однако было это давно, года 3-4 назад и сейчас возможно поведение другое.

Да что я рассуждаю? Пробовать надо :)

Всем спасибо за обсуждение, видимо так и сделаю: несколько vlan интерфейсов повяжу в бридж.

n0mad ★★ ()
Ответ на: комментарий от n0mad

Всем спасибо за обсуждение, видимо так и сделаю: несколько vlan интерфейсов повяжу в бридж.

Туплю господа..... интерфейся повязанные в бридж теряют адреса... с чего и начиналось :( система общается с бридж интерфейсом а бриж уже все раскидывает.

Мне нужен своего рода «антибридж». Один интерфейс логически разделенный на несколько :(

n0mad ★★ ()
Ответ на: комментарий от n0mad

Первоначальная задача изменилась? Просто если по сабжу - то и огороды городить не нужно, алиасы тут помогут

#на коленке...
ifconfig eth0 192.168.0.254 netmask 255.255.255.0
ifconfig eth0:0 192.168.1.254 netmask 255.255.255.0
ip route add default via 192.168.0.1 dev eth0 src 192.168.0.254
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.254
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to-source 192.168.0.254

Интернет будет раздаваться как с 0.254, так и с 1.254, что как я понял и требовалось

Имеется компьютер с одним eth адаптером работающий как шлюз и имеется несколько компьютеров которым надо раздать интернет. т.е. интернет приходит с адреса 192.168.0.1 (винда как шлюз в сотовый USB модем) и отдается с адреса 192.168.1.254 всем компьютерам сети 192.168.1.0/24

mihbel ()
Ответ на: комментарий от mihbel

#на коленке...

Я так понимаю что ключевое решение здесь отключить icmp redirect в /etc/sysctl.conf иначе ничего по этим правилам не будет натиться, будет просто отдаваться «icmp redirect» Задача не только заставить это работать а еще вспомнить как я это делал раньше :) Было какое-то решение, но 2.5 года назад выпал из жизни и до сейчас не дожило ни одного тестового сервера на котором это крутилось. Опять же хотелось в tcpdump видеть только трафик для этого интерфейса а не все что бежит по eth0 но это мелочи и не помню в моем варианте это так было или нет.

n0mad ★★ ()
Ответ на: комментарий от n0mad

Вот не поленился и воссоздал вашу схему

Вот не поленился и воссоздал вашу схему.

[gateway 192.168.2.2]
        |
    [linux box] ---[client 192.168.1.0/24]
		|
		-------[client 192.168.2.0/24]

	*linux box имеет только одну сетевую карту

Вывод с linux box

root@vmserver:~# ifconfig |grep -E "Link|addr"
    eth0      Link encap:Ethernet  HWaddr de:ad:c4:d5:88:ae
              inet addr:172.16.0.170  Bcast:172.16.0.255  Mask:255.255.255.0
              inet6 addr: fe80::dcad:c4ff:fed5:88ae/64 Scope:Link
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host

root@vmserver:~# cat /proc/sys/net/ipv4/conf/all/send_redirects
    1

root@vmserver:~# ifconfig eth0:0 192.168.2.254 netmask 255.255.255.0
root@vmserver:~# ifconfig eth0:1 192.168.1.254 netmask 255.255.255.0
root@vmserver:~# ip ro add default via 192.168.2.2
root@vmserver:~# echo "nameserver 8.8.8.8" > /etc/resolv.conf
root@vmserver:~# ip ro list
    192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.254
    192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.254
    172.16.0.0/24 dev eth0  proto kernel  scope link  src 172.16.0.170
    default via 192.168.2.2 dev eth0
root@vmserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@vmserver:~# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to-source 192.168.2.254
root@vmserver:~# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 ! -d 192.168.2.0/24 -j SNAT --to-source 192.168.2.254

Вывод с клиента

root@vmnatclient:~# ifconfig eth0|grep -E "Link|addr"
    eth0      Link encap:Ethernet  HWaddr 00:11:2f:7a:51:19
              inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
		  
root@vmnatclient:~# ip ro replace default via 192.168.1.254
root@vmnatclient:~# ping ya.ru
    PING ya.ru (93.158.134.3) 56(84) bytes of data.
    64 bytes from www.yandex.ru (93.158.134.3): icmp_req=1 ttl=54 time=45.1 ms

traceroute to ya.ru (87.250.251.3), 30 hops max, 60 byte packets
     1  192.168.1.254 (192.168.1.254)  0.503 ms  0.455 ms  0.433 ms
     2  192.168.2.2 (192.168.2.2)  0.764 ms  0.756 ms  1.053 ms
     ...

root@vmnatclient:~# ifconfig eth0 192.168.2.100 netmask 255.255.255.0
root@vmnatclient:~# ip ro replace default via 192.168.2.254

root@vmnatclient:~# ping ya.ru
    PING ya.ru (87.250.250.203) 56(84) bytes of data.
    64 bytes from www.yandex.ru (87.250.250.203): icmp_req=1 ttl=53 time=47.4 ms

root@vmnatclient:~# traceroute ya.ru
    traceroute to ya.ru (87.250.250.3), 30 hops max, 60 byte packets
     1  192.168.2.254 (192.168.2.254)  0.618 ms  0.571 ms  0.550 ms
     2  192.168.2.2 (192.168.2.2)  0.840 ms  0.849 ms  1.062 ms
     ...

Как можно видеть, редиректы включены, но ваше утверждение

иначе ничего по этим правилам не будет натиться, будет просто отдаваться «icmp redirect»

не верно

mihbel ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.