Страница 1 из 1
алиасные IP
Добавлено: 20 авг 2012, 22:56
Olej
Тема достаточно известная: как на сетевой интерфейс навесить "фиктивные" подсети с другими 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
Это именно то, что хотелось!
Re: алиасные IP
Добавлено: 20 авг 2012, 23:16
Olej
А теперь на другом хосте 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 .
Re: алиасные IP
Добавлено: 27 июн 2015, 21:10
Olej
Olej писал(а):
Очень неплохо, то что хотелось: один аппаратный адаптер (везде: device interrupt 16) фигурирует в 3-х подсетях.
И отключение алиасного интерфейса:
Код: Выделить всё
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) не стало.
алиасные IP
Добавлено: 22 дек 2015, 16:17
Olej
Ещё одно очень удобное применение алиасных 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, но размещённых в разные подсети.
алиасные IP
Добавлено: 13 июл 2019, 17:30
Olej
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 ... без перенастройки интерфейса
алиасные IP
Добавлено: 22 апр 2023, 15:13
Olej
Ещё раз... : 4 года прошло с последнего использования - утилиты меняются, интерфейсы меняются...
алиасные IP
Добавлено: 22 апр 2023, 20:55
Olej
Olej писал(а): ↑22 апр 2023, 15:13
Ещё раз...
Пусть имеем хост №1 - вот в таком вот состоянии:
Код: Выделить всё
olej@nvidia:~$ ip -4 a s dev eno1
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
altname enp0s25
inet 192.168.1.11/24 brd 192.168.1.255 scope global noprefixroute eno1
valid_lft forever preferred_lft forever
Код: Выделить всё
olej@nvidia:~$ ifconfig eno1
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::762:c6bf:9eaa:93a9 prefixlen 64 scopeid 0x20<link>
ether 70:71:bc:a3:c5:c0 txqueuelen 1000 (Ethernet)
RX packets 1527 bytes 160022 (160.0 KB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 828 bytes 92850 (92.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 20 memory 0xfe400000-fe420000
Код: Выделить всё
olej@nvidia:~$ route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.3 0.0.0.0 UG 100 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eno1
Теперь на интерфейс навешиваем алиасный IP
из совсем другой подсети:
Код: Выделить всё
olej@nvidia:~$ sudo ifconfig eno1:1 10.0.0.2 up
Код: Выделить всё
olej@nvidia:~$ ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::762:c6bf:9eaa:93a9 prefixlen 64 scopeid 0x20<link>
ether 70:71:bc:a3:c5:c0 txqueuelen 1000 (Ethernet)
RX packets 2080 bytes 226706 (226.7 KB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 1117 bytes 130960 (130.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 20 memory 0xfe400000-fe420000
eno1:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.2 netmask 255.0.0.0 broadcast 10.255.255.255
ether 70:71:bc:a3:c5:c0 txqueuelen 1000 (Ethernet)
device interrupt 20 memory 0xfe400000-fe420000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Локальная петля (Loopback))
RX packets 52 bytes 4946 (4.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 52 bytes 4946 (4.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Интересно, что ip не видит этой вариации в имени, но видит новый IP на общем интерфейсе:
Код: Выделить всё
olej@nvidia:~$ ip a s dev eno1
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 70:71:bc:a3:c5:c0 brd ff:ff:ff:ff:ff:ff
altname enp0s25
inet 192.168.1.11/24 brd 192.168.1.255 scope global noprefixroute eno1
valid_lft forever preferred_lft forever
inet 10.0.0.2/8 brd 10.255.255.255 scope global eno1:1
valid_lft forever preferred_lft forever
inet6 fe80::762:c6bf:9eaa:93a9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Код: Выделить всё
olej@nvidia:~$ route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.3 0.0.0.0 UG 100 0 0 eno1
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eno1
Ясно дело, что ни LAN 192.168.1.0/24 не видит этот интерфейс, ни он не видит LAN...
алиасные IP
Добавлено: 22 апр 2023, 21:01
Olej
Olej писал(а): ↑22 апр 2023, 20:55
Пусть имеем хост №1 - вот в таком вот состоянии:
Далее, на произвольном хосте №2 в LAN 192.168.1.0/24 :
Код: Выделить всё
olej@esprimop420:~$ ip -4 a s dev enp3s0
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.1.138/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
valid_lft 165109sec preferred_lft 165109sec
Код: Выделить всё
olej@esprimop420:~$ /sbin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.3 0.0.0.0 UG 100 0 0 enp3s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp3s0
Делаю подобные вещи:
Код: Выделить всё
olej@esprimop420:~$ sudo ifconfig enp3s0:1 10.0.0.5 up
[sudo] пароль для olej:
olej@esprimop420:~$ echo $?
0
Здесь другой дистрибутив (Debian), /sbin не попадает в $PATH ... но остальное анаогично:
Код: Выделить всё
olej@esprimop420:~$ /sbin/ifconfig enp3s0:1
enp3s0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.5 netmask 255.0.0.0 broadcast 10.255.255.255
ether 90:1b:0e:2b:fe:3a txqueuelen 1000 (Ethernet)
Код: Выделить всё
olej@esprimop420:~$ /sbin/ifconfig enp3s0
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.138 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::921b:eff:fe2b:fe3a prefixlen 64 scopeid 0x20<link>
ether 90:1b:0e:2b:fe:3a txqueuelen 1000 (Ethernet)
RX packets 442744 bytes 152787250 (145.7 MiB)
RX errors 0 dropped 51 overruns 0 frame 0
TX packets 133419 bytes 13095746 (12.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Код: Выделить всё
olej@esprimop420:~$ /sbin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.3 0.0.0.0 UG 100 0 0 enp3s0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 enp3s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp3s0
И опять же:
Код: Выделить всё
olej@esprimop420:~$ ip -4 a s
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: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.1.138/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
valid_lft 164760sec preferred_lft 164760sec
inet 10.0.0.5/8 brd 10.255.255.255 scope global enp3s0:1
valid_lft forever preferred_lft forever
алиасные IP
Добавлено: 22 апр 2023, 21:10
Olej
Olej писал(а): ↑22 апр 2023, 20:55
имеем хост №1
Olej писал(а): ↑22 апр 2023, 21:01
на произвольном хосте №2
Эти 2 хоста прекрасно видят друг-друга в подсетке 10.0.0.0/8:
Код: Выделить всё
olej@esprimop420:~$ ping -c3 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.554 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.250 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.368 ms
--- 10.0.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2032ms
rtt min/avg/max/mdev = 0.250/0.390/0.554/0.125 ms
Код: Выделить всё
olej@nvidia:~$ ping -c3 10.0.0.5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=0.328 ms
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=0.205 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=0.259 ms
--- 10.0.0.5 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2045ms
rtt min/avg/max/mdev = 0.205/0.264/0.328/0.050 ms
Но ни один из десятка хостов 192.168.1.0/24 их в этой подсетке не видит.
Вот это ещё интереснее - сканирование LAN:
Код: Выделить всё
olej@nvidia:~$ nmap -sP 10.0.0.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2023-04-22 05:18 EEST
Nmap scan report for nvidia (10.0.0.2)
Host is up (0.00019s latency).
Nmap scan report for 10.0.0.5
Host is up (0.00027s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 3.00 seconds
Сканер видит в подсети 10.0.0.0/24
2 хоста
Фактически, мы создали виртуальную сеть (10.0.0.2 и 10.0.0.5) над реальной физической LAN 192.168.1.0/24.
И так можно сделать сколько угодно виртуальных сетей, с произвольным составом хостов...