Мне нужно выполнить команду
route add -p 123.45.67.8 mask 255.255.255.0 208.00.000.000
на сервере Linux. Какой эквивалент в Unix?
решение1
Они очень похожи.
Чтобы добавить маршрут для сети — в этом примере 192.168.20.0 маска 255.255.255.0
sudo route add -net 192.168.20.0/24 gw 10.0.0.1
или
sudo route add -net 192.168.20.0 netmask 255.255.255.0 gw 10.0.0.1
Чтобы добавить маршрут для хоста
sudo route add -host 192.168.20.20 gw 10.0.0.1
Если вы запустите программу route add
без параметров, вам будет предоставлен список параметров, которые вы можете использовать. Например, метрики, интерфейс и некоторые другие.
Также вам поможет страница руководства.
решение2
Без объяснения того, что делает эта команда Windows, ответить сложно, но, похоже, вам следует прочитать страницу руководства по ip-route
.
решение3
Один из способов сделать маршрут постоянным — добавлять его каждый раз при запуске машины. Это дает тот же результат, что и -p
флаг в Windows.
Это можно сделать с помощью Cron
:
@reboot /sbin/route add -net 123.45.67.8 netmask 255.255.255.0 gw 208.0.0.0
dev eth0
может использоваться в конце команды, если необходимо указать используемый порт.
Это работает по крайней мере в Ubuntu 14.04 и, вероятно, в большинстве современных реализаций Cron.
решение4
Чтобы добавлять маршрут каждый раз, когда интерфейс включается, и удалять его каждый раз, когда он выключается, можно добавить подходящую команду в строфу интерфейса в /etc/network/interfaces
(для Debian). Вот одна из моих (она заставляет локальные трансляции идти в локальную сеть, а не к провайдеру на моем шлюзе NAT):
iface eth1 inet static
address 192.168.0.2
netmask 255.255.255.0
pre-up iptables-restore </etc/iptables.rules
up route add 255.255.255.255 eth1
down route del 255.255.255.255
Его можно легко адаптировать к вашей ОС и потребностям.