У меня проблема с добавлением 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 в соответствии с шлюзом, который вы хотите использовать. Как сказал Матиас Вайднер, вам не нужен шлюз, поскольку вы напрямую подключены (та же подсеть = без маршрутизации)