алиасные IP

Настройка, программирование, распределённые вычисления

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 14300
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

алиасные IP

Непрочитанное сообщение Olej » 20 авг 2012, 22:56

Тема достаточно известная: как на сетевой интерфейс навесить "фиктивные" подсети с другими IP в этих подсетях?

Но меня больше интересовал вопрос (как-то давно не пересекался): что произойдёт с таблицей роутинга при навешивании таких алиасных IP.

Проверяем:

Код: Выделить всё

bash-4.2$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.5  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::215:60ff:fec4:ee02  prefixlen 64  scopeid 0x20<link>
        ether 00:15:60:c4:ee:02  txqueuelen 1000  (Ethernet)
        RX packets 129985  bytes 97106629 (92.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 123992  bytes 17131967 (16.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 16436
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 706  bytes 20698 (20.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 706  bytes 20698 (20.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Это до.

Код: Выделить всё

bash-4.2$ sudo ifconfig eth0:0 192.168.2.5/24
bash-4.2$ sudo ifconfig eth0:1 192.168.3.5/24
Это после:

Код: Выделить всё

bash-4.2$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.5  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::215:60ff:fec4:ee02  prefixlen 64  scopeid 0x20<link>
        ether 00:15:60:c4:ee:02  txqueuelen 1000  (Ethernet)
        RX packets 130451  bytes 97286082 (92.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 124560  bytes 17224068 (16.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  

eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.5  netmask 255.255.255.0  broadcast 192.168.2.255
        ether 00:15:60:c4:ee:02  txqueuelen 1000  (Ethernet)
        device interrupt 16  

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.5  netmask 255.255.255.0  broadcast 192.168.3.255
        ether 00:15:60:c4:ee:02  txqueuelen 1000  (Ethernet)
        device interrupt 16  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 16436
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 761  bytes 22293 (21.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 761  bytes 22293 (21.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Очень неплохо, то что хотелось: один аппаратный адаптер (везде: device interrupt 16) фигурирует в 3-х подсетях.

Роутинг:

Код: Выделить всё

bash-4.2$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
Это именно то, что хотелось!

Аватара пользователя
Olej
Писатель
Сообщения: 14300
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: алиасные IP

Непрочитанное сообщение Olej » 20 авг 2012, 23:16

А теперь на другом хосте LAN 192.168.1.0/24:

Код: Выделить всё

[olej@nvidia ~]$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr F4:6D:04:60:78:6F  
          inet addr:192.168.1.9  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::f66d:4ff:fe60:786f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:40 errors:0 dropped:0 overruns:0 frame:0
          TX packets:66 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6179 (6.0 KiB)  TX bytes:7963 (7.7 KiB)
          Interrupt:43 Base address:0x2000 

Код: Выделить всё

[olej@nvidia .ssh]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
[olej@nvidia ~]$ ping rus-linux.net
PING rus-linux.net (77.222.42.148) 56(84) bytes of data.
64 bytes from vip-49.sweb.ru (77.222.42.148): icmp_req=1 ttl=51 time=93.5 ms
64 bytes from vip-49.sweb.ru (77.222.42.148): icmp_req=2 ttl=51 time=96.0 ms
64 bytes from vip-49.sweb.ru (77.222.42.148): icmp_req=3 ttl=51 time=96.0 ms
^C
--- rus-linux.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2122ms
rtt min/avg/max/mdev = 93.546/95.210/96.059/1.203 ms
Это было до...

Теперь перевешиваем хост в подсеть (реальную) 192.168.2.0/24:

Код: Выделить всё

[olej@nvidia ~]$ sudo ifconfig eth0 192.168.2.9 up
[olej@nvidia ~]$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr F4:6D:04:60:78:6F  
          inet addr:192.168.2.9  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::f66d:4ff:fe60:786f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:67 errors:0 dropped:0 overruns:0 frame:0
          TX packets:96 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9154 (8.9 KiB)  TX bytes:13268 (12.9 KiB)
          Interrupt:43 Base address:0x2000 
[olej@nvidia ~]$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     *               255.255.255.0   U     0      0        0 eth0
Доступ в LAN к алиасному IP предыдущего хоста:

Код: Выделить всё

[olej@nvidia ~]$ ping 192.168.2.5
PING 192.168.2.5 (192.168.2.5) 56(84) bytes of data.
64 bytes from 192.168.2.5: icmp_req=1 ttl=64 time=0.292 ms
64 bytes from 192.168.2.5: icmp_req=2 ttl=64 time=0.146 ms
64 bytes from 192.168.2.5: icmp_req=3 ttl=64 time=0.158 ms
^C
--- 192.168.2.5 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.146/0.198/0.292/0.068 ms
Всё ОК.
Но доступа внаружу (через шлюз LAN 192.168.1.1) нет:

Код: Выделить всё

[olej@nvidia ~]$ ping rus-linux.net
ping: unknown host rus-linux.net
И доступа в LAN подсеть 192.168.1.0/24, в которой находится шлюз, да и хост, которому мы повесили алиасный IP - нет:

Код: Выделить всё

[olej@nvidia ~]$ ping 192.168.1.5
connect: Сеть недоступна
Вот таким простейшим способом LAN разбилась на 3 изолированных подсети: 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24 .

Аватара пользователя
Olej
Писатель
Сообщения: 14300
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: алиасные IP

Непрочитанное сообщение Olej » 27 июн 2015, 21:10

Olej писал(а): Очень неплохо, то что хотелось: один аппаратный адаптер (везде: device interrupt 16) фигурирует в 3-х подсетях.
И отключение алиасного интерфейса:

Код: Выделить всё

bash-4.2$ sudo ifconfig eth0:0 down

Код: Выделить всё

bash-4.2$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.5  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::215:60ff:fec4:ee02  prefixlen 64  scopeid 0x20<link>
        ether 00:15:60:c4:ee:02  txqueuelen 1000  (Ethernet)
        RX packets 150314  bytes 106418136 (101.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 145366  bytes 20499156 (19.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.5  netmask 255.255.255.0  broadcast 192.168.3.255
        ether 00:15:60:c4:ee:02  txqueuelen 1000  (Ethernet)
        device interrupt 16  
...
Одного интерфейса (eth0:0) не стало.

Аватара пользователя
Olej
Писатель
Сообщения: 14300
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: алиасные IP

Непрочитанное сообщение Olej » 22 дек 2015, 16:17

Ещё одно очень удобное применение алиасных IP: проверка принадлежности IP подсетям с соответствующими масками, широковещательным адресом, IP подсети и т.д.:

Код: Выделить всё

olej@nvidia ~ $ sudo ifconfig eth0:1 10.0.15.254/24
olej@nvidia ~ $ ifconfig eth0:1
eth0:1    Link encap:Ethernet  HWaddr f4:6d:04:60:78:6f  
          inet addr:10.0.15.254  Bcast:10.0.15.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Код: Выделить всё

olej@nvidia ~ $ sudo ifconfig eth0:1 10.0.15.254/31
olej@nvidia ~ $ ifconfig eth0:1
eth0:1    Link encap:Ethernet  HWaddr f4:6d:04:60:78:6f  
          inet addr:10.0.15.254  Bcast:10.0.15.255  Mask:255.255.255.254
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Код: Выделить всё

olej@nvidia ~ $ sudo ifconfig eth0:1 10.0.15.254/30
olej@nvidia ~ $ ifconfig eth0:1
eth0:1    Link encap:Ethernet  HWaddr f4:6d:04:60:78:6f  
          inet addr:10.0.15.254  Bcast:10.0.15.255  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Вот примеры 3-х одинаковых IP 10.0.15.254, но размещённых в разные подсети.

Аватара пользователя
Olej
Писатель
Сообщения: 14300
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: алиасные IP

Непрочитанное сообщение Olej » 13 июл 2019, 17:30

Olej писал(а):Тема достаточно известная: как на сетевой интерфейс навесить "фиктивные" подсети с другими IP в этих подсетях?
Но меня больше интересовал вопрос (как-то давно не пересекался): что произойдёт с таблицей роутинга при навешивании таких алиасных IP.
Снова выплыли алиасные IP, теперь с другой целью:
- одноплатник Rapsberry Pi носится с места на место, между сетками 192.168.1.0 (шлюз 192.168.1.3) и 192.168.0.0 (шлюз 192.168.0.1)...
- для обновлений и установки пакетов DEB доступ в Интернет обязателен...
- заказчик не силён, так чтобы ему доверять перестраивать сетку
- хотелось бы чтобы в сетке 192.168.1.0 интерфейс работал через шлюз 192.168.1.3, а в сетке 192.168.0.0 - через шлюз 192.168.0.1 ... без перенастройки интерфейса

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: FAST WebCrawler [Crawler] и 1 гость