Назад | Перейти на главную страницу

Почему добавление IP-маршрута не работает, а добавление IP-маршрута с меньшими деталями, а затем изменение работает?

У меня проблема с добавлением ip маршрута. Удивительно, но я могу добавить маршрут, а затем изменить его, но я не могу добавить его напрямую:

# ip route add 192.168.0.0/16 via 192.168.255.254 src 192.168.1.101
RTNETLINK answers: No such process

но:

# ip route add 192.168.0.0/16 dev eth0
# ip route change 192.168.0.0/16 via 192.168.255.254 src 192.168.1.101

Мой файл интерфейсов:

iface lo inet loopback
auto eth0
iface eth0 inet static
    address 178.xxx.xxx.xxx
    netmask 255.255.255.192
    network 178.xxx.xxx.xxx
    broadcast 178.xxx.xxx.xxx
    gateway 178.xxx.xxx.xxx
auto eth0:1
iface eth0:1 inet static
    address 192.168.1.101
    netmask 255.255.0.0

Я немного растерялся, я должен сказать. Я нормально добавляю, а затем изменяю, но не очень приятно не понимать, почему он работает в два этапа, а не напрямую. Я читал справочные страницы за справочниками, ничего не понимая.

Обновлено с помощью ответов:

У меня теперь есть шлюз eth0 и eth0:0, но поскольку мне нужен весь мой трафик, кроме 192.168.0.0/16 быть отмеченным как исходящий от моего 178.xxx.xxx.xxx адрес, я добавил правило маршрутизации. Может быть, имея eth0 с 192.168.1.101 ip, а затем 178.xxx.xxx.xxx IP на eth0:0 будет работать без правила маршрутизации, но вот оно:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 178.xxx.xxx.131
    netmask 255.255.255.192
    network 178.xxx.xxx.128
    broadcast 178.xxx.xxx.191
    gateway 178.xxx.xxx.190
    up /sbin/ip route add default via 178.xxx.xxx.190 dev eth0 table 125
    up /sbin/ip rule add from 178.xxx.xxx.128/26 table 125
    post-down /sbin/ip route del default via 178.xxx.xxx.190 dev eth0 table 125
    post-down /sbin/ip rule del from 178.xxx.xxx.128/26 table 125

auto eth0:0
iface eth0:0 inet static
    address 192.168.1.101
    netmask 255.255.0.0
    gateway 192.168.255.254

Я тоже отключил rp_filter:

echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter

Спасибо за вашу помощь!

Согласно вашему файлу интерфейсов, вы уже находитесь в сети 192.168.0.0/16, поэтому вам не нужен шлюз в эту сеть.

Если я скорректирую свои результаты для вашей настройки IP (у меня 192.168.x.0 / 24):

$ sudo ip route добавить 192.168.0.0/16 через 192.168.255.254 src 192.168.1.101

я получил

RTNETLINK отвечает: Нет такого процесса

Но

$ sudo ip route добавить 192.168.0.0/16 через 192.168.1.254 src 192.168.1.101

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

Поскольку другие указали, что ваш IP-адрес на eth0: 1 из 192.168.1.101/16 будет означать, что у вас уже есть статический маршрут для этой подсети. Похоже, вам нужно добавить шлюз для этого интерфейса, указывающий на 192.168.255.254.

Я знаю, что уже немного поздно, но я также хотел бы уточнить, для чего предназначен «маршрут». Ты сказал :

Я хочу, чтобы весь мой трафик, кроме 192.168.0.0/16, был отмечен как исходящий с моего адреса 178.xxx.xxx.xxx

Команда route позволяет определять маршрут на основе пункта назначения, а не источника. Вам необходимо настроить свои службы для использования IP в соответствии с шлюзом, который вы хотите использовать. Как сказал Матиас Вайднер, вам не нужен шлюз, поскольку вы напрямую подключены (та же подсеть = без маршрутизации)