iproute2 и NetworkManager в Ubuntu15.04
Есть ли способ "правильно" настроить маршрут по умолчанию, используя iproute2
набор инструментов в системе Ubuntu?
Мой рабочий стол / сервер подключен через Ethernet к коммутатору; когда система загружается и сеть запускается, система "запутывается", поскольку наряду с шлюзом есть другие системы, подключенные к тому же коммутатору. В результате система Ubuntu 15.04 не может подключиться к внешней сети.
# ip route show
192.168.1.0/24 dev eth1 proto kernel scope link metric 100
...
Однажды я выпускаю
# ip route add default via 192.168.1.1 dev eth1
Я вижу кое-что о whoopsie
в журнале сообщений и связи у меня есть сеть!
# ip r
default via 192.168.1.1 dev eth1 proto static metric 100
192.168.1.0/24 dev eth1 proto kernel scope link metric 100
...
Теперь, как мне сделать это постоянным в этой системе без, из-за отсутствия лучшего термина, жесткого кодирования его в /etc/network/
подкаталоги? С помощью NetworkManager и его инструмента nmcli, кажется, у меня нет возможности назначить соединение шлюзом, если я полностью не отключу DHCP! Это недостаток в NetworkManager или Ubuntu или iproute2?
я вижу /etc/iproute2
каталог; хотя на страницах руководства, похоже, нет указаний на то, как сделать изменения конфигурации постоянными. При поиске в сети StackExchange соответствующих сайтов вопросов и ответов я натолкнулся на различные предложения, которые на самом деле не определяют канонический способ достижения этой цели. Может быть, DHCP нужно отключить для этого в NetworkManager, я не уверен.
Systemd
Пока я добавляю строку в /etc/rc.local
, Однако, это терпит неудачу во время загрузки, так как я предполагаю, что это выполняется прежде, чем сеть будет готова.
# systemctl status -l rc-local.service
...
...rc.local[1396]: RTNETLINK answers: Network is unreachable
...
Перезапуск службы после запуска системы устраняет ошибку. Идем вперед с systemd
, AFAIK, идея состоит в том, чтобы прекратить использовать / поддерживать этот скрипт. Может быть, сервисы уровня пользователя должны быть использованы сейчас?
1 ответ
Вы можете сделать это, добавив ниже строку в /etc/network/interfaces
post-up route add default gw 192.168.1.1
или же
post-up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
добавить это в нижней части определения интерфейса, как
auto eth0
iface eth0 inet static
address 192.168.1.50
netmask 255.255.255.0
post-up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
или же
с помощью iproute2
Вы можете сделать следующие шаги: открыть файл /etc/iproute2/rt_tables
и добавить 1 rt2
в конце это будет выглядеть так:
# reserved values
#
255 local
254 main
253 default
0 unspec
# local
#1 inr.ruhep
1 rt2
и открыть /etc/network/interfaces
файл и добавить
auto eth0
iface eth0 inet static
address 192.168.1.50
netmask 255.255.255.0
post-up ip route add 192.168.1.0/24 dev eth0 src 192.168.1.50 table rt2
post-up ip route add default via 192.168.1.1 dev eth0 table rt2
post-up ip rule add from 192.168.1.1 table rt2
post-up ip rule add to 192.168.1.1 table rt2
Если вы используете несколько интерфейсов, вы можете определить статическую маршрутизацию для всех интерфейсов. Надеюсь, это поможет.