Как мне связать каждый из сетевых адаптеров моего сервера с отдельным IP?

У меня вопрос: «Как связать каждый из сетевых адаптеров моего сервера с отдельным IP-адресом?»

Мой сервер Ubuntu 12.04 имеет два сетевых контроллера - оба подключены к моей домашней сети.

У сетевых карт есть имена устройств, которые были установлены в /etc/udev/rules.d/70-persistent-net.rules. Я назвал lan0 и lan1. (см. ниже мой 70-persistent-net.rules).

Каждый сетевой адаптер корректно получает свои настройки IP через DHCP от моего маршрутизатора. Назначение IP выполняется на основе MAC-адреса запроса DHCP. lan0 назначается ip 172.23.80.1, а lan1 назначается 172.23.80.2. (см. ниже вывод ifconfig и мой /etc/network/interfaces).

Моя проблема в том, что когда я подключаюсь через ssh с отдельного компьютера, я всегда получаю соединение с того же MAC-адреса сервера, независимо от ip, который я использовал в вызове ssh.

Позвольте мне описать следующий эксперимент, который показывает мою проблему. Я использую три терминала (term1, term2 и term3) на моем настольном компьютере Ubuntu

term1:

arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.16.0.1               ether   00:50:7f:9d:2d:30   C                     wlan0
172.23.80.1                      (incomplete)                              wlan0

term2:

ssh me@172.23.80.1
me@172.23.80.1's password: 
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic-pae i686)

* Documentation:  https://help.ubuntu.com/
Last login: Thu Aug 16 12:37:48 2012 from 172.23.128.11
me@FERMI:~$ 

term1:

arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.16.0.1               ether   00:50:7f:9d:2d:30   C                     wlan0
172.23.80.1              ether   00:0d:61:22:3d:d6   C                     wlan0

term3:

ssh me@172.23.80.2
me@172.23.80.2's password: 
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic-pae i686)

* Documentation:  https://help.ubuntu.com/
Last login: Thu Aug 16 13:37:12 2012 from 172.23.128.11
me@FERMI:~$ 

term1:

arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.23.80.2              ether   00:0d:61:22:3d:d6   C                     wlan0
172.16.0.1               ether   00:50:7f:9d:2d:30   C                     wlan0
172.23.80.1              ether   00:0d:61:22:3d:d6   C                     wlan0

Как видно из этого последнего arp, оба ssh-соединения обслуживаются одним NIC на сервере, хотя Два IP-адреса были назначены для разных сетевых карт. Это моя проблема.

Вот моя конфигурация сервера:

me@FERMI:~$ ifconfig
lan0      Link encap:Ethernet  HWaddr 00:0d:61:22:3d:d6  
          inet addr:172.23.80.1  Bcast:172.31.255.255  Mask:255.240.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1452 errors:0 dropped:0 overruns:0 frame:0
          TX packets:496 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:113691 (113.6 KB)  TX bytes:72934 (72.9 KB)

lan1      Link encap:Ethernet  HWaddr 00:19:5b:68:93:57  
          inet addr:172.23.80.2  Bcast:172.31.255.255  Mask:255.240.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1103 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:85747 (85.7 KB)  TX bytes:684 (684.0 B)
          Interrupt:22 Base address:0x9000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:700 (700.0 B)  TX bytes:700 (700.0 B)


me@FERMI:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto lan0 
iface lan0 inet dhcp

auto lan1 
iface lan1 inet dhcp


me@FERMI:~$ cat /etc/udev/rules.d/70-persistent-net.rules 
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x1186:/sys/devices/pci0000:00/0000:00:1e.0/0000:03:02.0 (sundance)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:19:5b:68:93:57", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="lan1"

# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:03.0/0000:02:01.0 (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:61:22:3d:d6", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="lan0"


me@FERMI:~$ route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         OHM.UNIVERSE    0.0.0.0         UG    100    0        0 lan0
172.16.0.0      *               255.240.0.0     U     0      0        0 lan0
172.16.0.0      *               255.240.0.0     U     0      0        0 lan1


me@FERMI:~$ cat /proc/sys/net/ipv4/ip_forward
0


me@FERMI:~$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.23.128.11            ether   00:18:de:02:f0:5c   C                     lan0
172.16.0.1               ether   00:50:7f:9d:2d:30   C                     lan0


me@FERMI:~$ sudo ufw status
Status: inactive
5
задан 1 January 2014 в 00:58

3 ответа

Ваш NIC обязан разделить IP. Проблемой является маршрут по умолчанию. Вывод route шоу, что маршрутизация по умолчанию идет через lan0 NIC.

Для разрешения требования просто удаляют маршрут по умолчанию с ip route del default или route del default.

Однако после этого, Вы привычка смочь направить к внешней стороне Вашу сеть. Если Вы хотите, то полезно создать две подсети, например, 172.23.80.0 и 172.23.81.0 и маршрут отдельно с через ip route 172.23.80.0/24 via 172.23.80.1 dev lan0 и ip route 172.23.81.0/24 via 172.23.81.1 dev lan1. Например

#/etc/network/interfaces
# первичный сетевой интерфейс
автоматический lan1
iface lan1 inet dhcp
пост направляет del значение по умолчанию
пост, IP направляет 172.23.81.0/24 через 172.23.81.1 dev lan1

, Также возможный, но непротестированный

маршрут del значение по умолчанию
IP маршрут добавляет, что 172.23.80.1/32 через маршрут 172.23.80.1 dev lan0
ip добавляют 172.23.80.2/32 через 172.23.80.2 dev lan1

6
ответ дан 1 January 2014 в 00:58

Вы могли использовать iptables для насильственного изменения исходящего MAC/IP-адресов для пакетов к соединяющемуся компьютеру.

0
ответ дан 1 January 2014 в 00:58

Так, я хотел бы снабдить это предисловием путем высказывания моего iptables, навыки не тверды. Но я полагаю, что @chronospoon корректен о дефиците ответа @bersch, даже при том, что это смотрит почти там.

Так или иначе, я ищу немного и нашел LARTC (Расширенная маршрутизация Linux и Управление трафиком) . Существует практическое руководство на доступ разделения , который похож на него, объясняет точно, что Вы хотите. Я заключу в кавычки:

первое - то, как направить ответы на пакеты, входящие по конкретному поставщику, сказать Поставщика 1, отступает снова по тому же самому поставщику.

Позволяют нам сначала определить некоторые символические имена. Позвольте $IF1 быть названием первого интерфейса (if1 в изображении выше) и $IF2 название второго интерфейса. Затем позвольте $IP1 быть IP-адресом, связанным с $IF1 и $IP2 IP-адрес, связанный с $IF2. Затем, позвольте $P1 быть IP-адресом шлюза в Provider 1 и $P2 IP-адрес шлюза в поставщике 2. Наконец, позвольте $P1_NET быть $P1 сети IP, находится в, и $P2_NET, в котором находится $P2 сети IP.

Каждый создает две дополнительных таблицы маршрутизации, скажите T1 и T2. Они добавляются в/etc/iproute2/rt_tables. Затем Вы настраиваете маршрутизацию в этих таблицах следующим образом:

  ip route add $P1_NET dev $IF1 src $IP1 table T1
  ip route add default via $P1 table T1
  ip route add $P2_NET dev $IF2 src $IP2 table T2
  ip route add default via $P2 table T2

Ничто захватывающее, просто создайте маршрут к шлюзу и создайте значение по умолчанию, направляют через тот шлюз, как Вы сделали бы в случае единственного восходящего поставщика, но помещать маршруты в отдельную таблицу на поставщика. Обратите внимание, что сетевой маршрут достаточен, как он говорит Вам, как найти любой хост в той сети, которая включает шлюз, как указано выше. Затем Вы настраиваете основную таблицу маршрутизации. Это - хорошая идея направить вещи прямому соседу через интерфейс, подключенный к тому соседу. Отметьте 'src' аргументы, они удостоверяются, что правильный исходящий IP-адрес выбран.

    ip route add $P1_NET dev $IF1 src $IP1
    ip route add $P2_NET dev $IF2 src $IP2

Затем Ваше предпочтение маршрута по умолчанию:

    ip route add default via $P1

Затем, Вы настраиваете правила маршрутизации. Они на самом деле выбирают что таблицу маршрутизации направить с. Вы хотите удостовериться, что Вы направляете данный интерфейс, если у Вас уже есть соответствующий исходный адрес:

    ip rule add from $IP1 table T1
    ip rule add from $IP2 table T2

Этот набор команд удостоверяется, что всем ответам для торговли вхождения в конкретном интерфейсе отвечают от того интерфейса.

Предупреждение

примечания Читателя Rod Roark: 'Если $P0_NET является локальной сетью, и $IF0 является своим интерфейсом, следующие дополнительные записи желательны:

    ip route add $P0_NET     dev $IF0 table T1
    ip route add $P2_NET     dev $IF2 table T1
    ip route add 127.0.0.0/8 dev lo   table T1
    ip route add $P0_NET     dev $IF0 table T2
    ip route add $P1_NET     dev $IF1 table T2
    ip route add 127.0.0.0/8 dev lo   table T2

'
Теперь, это - просто очень простая установка. Это будет работать на все процессы, работающие на самом маршрутизаторе, и на локальную сеть, если это будет подменено. Если это не, то у Вас или есть пространство IP от обоих поставщиков, или Вы собираетесь хотеть подменить одному из этих двух поставщиков. В обоих случаях Вы захотите добавить выбор правил который поставщик направить из на основе IP-адреса машины в локальной сети.

0
ответ дан 1 January 2014 в 00:58

Другие вопросы по тегам:

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