Я пытаюсь подключить второе соединение ISP к моему серверу для наших SIP-телефонов.
eth0
по умолчанию включен сервис 25 МБ 192.168.1.x, Я настроил
eth1
чтобы новая услуга 6Мб была 10.10.1.x
Оба маршрутизатора настроены на pppoe с уникальными статическими IP-адресами, у меня есть отдельные коммутаторы и один сервер Ubuntu 14Lts с двумя портами Ethernet. По отдельности любой из них работает нормально, но с обоими я могу только ping -I eth[0|1] 8.8.8.8 -c 3
Однако на одном интерфейсе нет проблем с пингом каждого маршрутизатора.
Если кто-нибудь может помочь мне запустить и запустить Nic, а также использовать основной трафик по умолчанию через eth0
и просто Asterisk / Sip трафик через eth1
спасет мой день.
Некоторые информационные выходы:
# cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.100
gateway 192.168.1.1
netmask 255.255.255.0
auto eth1
iface eth1 inet static
address 10.10.1.101
#gateway 10.10.1.1
netmask 255.255.255.0
$ sudo route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default home.Home 0.0.0.0 UG 0 0 0 eth1
10.10.1.0 * 255.255.255.0 U 1 0 0 eth1
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
$ sudo ifdown eth0 && sudo ifup eth0
RTNETLINK answers: No such process
RTNETLINK answers: File exists
Failed to bring up eth0.
$ sudo ifdown eth1 && sudo ifup eth1
ifdown: interface eth1 not configured
RTNETLINK answers: File exists
Failed to bring up eth1.
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:25:90:11:c8:44
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::225:90ff:fe11:c844/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2316517 errors:0 dropped:0 overruns:0 frame:0
TX packets:3877952 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1881181270 (1.8 GB) TX bytes:5573716194 (5.5 GB)
Interrupt:16 Memory:faee0000-faf00000
eth1 Link encap:Ethernet HWaddr 00:25:90:11:c8:45
inet addr:10.10.1.101 Bcast:10.10.1.255 Mask:255.255.255.0
inet6 addr: fe80::225:90ff:fe11:c845/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:214622 errors:0 dropped:0 overruns:0 frame:0
TX packets:9763 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13988405 (13.9 MB) TX bytes:890576 (890.5 KB)
Interrupt:16 Memory:fafe0000-fb000000
======================Изменить 1:===========================
Спасибо Петру Жабину за инструкцию iproute2
apt-get install iproute2
echo "1 link2" >> /etc/iproute2/rt_tables
ip route add 10.10.1.0/24 dev eth1 src 10.10.1.101 table link2
ip route add default via 10.10.1.1 dev eth1 table link2
ip rule add from 10.10.1.101/32 table link2
ip rule add to 10.10.1.101/32 table link2
Как-то странно в первый раз, когда я попробовал sudo echo "1 link2" >> /etc/iproute2/rt_tables
он ответил -bash: / etc / iproute2 / rt_tables: Permission denied, но я переключился на Root, чтобы избежать необходимости в sudo, и больше никаких жалоб не поступало.
======================Изменить 2:===========================
# ping -I 10.10.1.101 8.8.8.8 -c 3
PING 8.8.8.8 (8.8.8.8) from 10.10.1.101 : 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2014ms
======================Изменить 3:===========================
# ip rule show
0: from all lookup local
32764: from all to 10.10.1.101 lookup link2
32765: from 10.10.1.101 lookup link2
32766: from all lookup main
32767: from all lookup default
# ip route show
default via 192.168.1.1 dev eth0
10.10.1.0/24 dev eth1 proto kernel scope link src 10.10.1.101
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
# ip route show table link2
default via 10.10.1.1 dev eth1
10.10.1.0/24 dev eth1 scope link src 10.10.1.101
Отображение таблицы link2, как ни странно, было неудачным. Не понимаю, почему не всегда печатается. Хорошо, что пинг через IP работает, а вот eth1 - нет. Для завершения я также включаю полные выставочные таблицы
# ip route show table all
default via 10.10.1.1 dev eth1 table link2
10.10.1.0/24 dev eth1 table link2 scope link src 10.10.1.101
default via 192.168.1.1 dev eth0
10.10.1.0/24 dev eth1 proto kernel scope link src 10.10.1.101
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
broadcast 10.10.1.0 dev eth1 table local proto kernel scope link src 10.10.1.101
local 10.10.1.101 dev eth1 table local proto kernel scope host src 10.10.1.101
broadcast 10.10.1.255 dev eth1 table local proto kernel scope link src 10.10.1.101
broadcast 127.0.0.0 dev lo table local proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
broadcast 192.168.1.0 dev eth0 table local proto kernel scope link src 192.168.1.100
local 192.168.1.100 dev eth0 table local proto kernel scope host src 192.168.1.100
broadcast 192.168.1.255 dev eth0 table local proto kernel scope link src 192.168.1.100
broadcast 192.168.122.0 dev virbr0 table local proto kernel scope link src 192.168.122.1
local 192.168.122.1 dev virbr0 table local proto kernel scope host src 192.168.122.1
broadcast 192.168.122.255 dev virbr0 table local proto kernel scope link src 192.168.122.1
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth1 proto kernel metric 256
unreachable default dev lo table unspec proto kernel metric 4294967295 error -101
local ::1 dev lo table local proto none metric 0
local fe80::225:90ff:fe11:c844 dev lo table local proto none metric 0
local fe80::225:90ff:fe11:c845 dev lo table local proto none metric 0
ff00::/8 dev eth0 table local metric 256
ff00::/8 dev eth1 table local metric 256
unreachable default dev lo table unspec proto kernel metric 4294967295 error -101
# ping -I eth1 8.8.8.8 -c 3
PING 8.8.8.8 (8.8.8.8) from 10.10.1.101 eth1: 56(84) bytes of data.
From 10.10.1.101 icmp_seq=1 Destination Host Unreachable
From 10.10.1.101 icmp_seq=2 Destination Host Unreachable
From 10.10.1.101 icmp_seq=3 Destination Host Unreachable
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2015ms
pipe 3
# ping -I 10.10.1.101 8.8.8.8 -c 3
PING 8.8.8.8 (8.8.8.8) from 10.10.1.101 : 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=60 time=29.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=60 time=29.3 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=60 time=28.8 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 28.804/29.192/29.433/0.310 ms
Для начала вам необходимо правильно настроить обратный путь для пакетов, входящих через эти шлюзы. Это означает, что если есть пакет, входящий через eth1, ответ также должен идти через eth1, а не через маршрут по умолчанию.
Чтобы он работал, вам нужен iproute2, который позволит вам иметь несколько таблиц маршрутизации и несколько шлюзов. Во-первых, у вас должно быть только один адрес шлюза настроен в сети / интерфейсах, предположим, что это сеть 192.168.1.100, и вы хотите, чтобы трафик с 10.10.1.101 проходил через eth1 через маршрутизатор 10.10.1.1.
Тогда все остальное будет таким (при необходимости добавьте sudo):
apt-get install iproute2
echo "1 link2" >> /etc/iproute2/rt_tables
ip route add 10.10.1.0/24 dev eth1 src 10.10.1.101 table link2
ip route add default via 10.10.1.1 dev eth1 table link2
ip rule add from 10.10.1.101/32 table link2
ip rule add to 10.10.1.101/32 table link2
Это заставит вас работать с вашим обратным трафиком, идущим к нужному маршрутизатору, и вы также сможете без проблем выполнить ping -I из обоих интерфейсов. Вышеупомянутое создает вторую таблицу маршрутизации (link2), устанавливает для нее маршрут и область действия по умолчанию и добавляет два правила для обработки входящего и исходящего трафика.
Если ваши телефоны будут подключаться к этому серверу извне, этого будет достаточно. Если они где-то внутри, прокомментируйте более подробную информацию о настройке внутренней сети.