Кажется, что Вы могли использовать комбинацию ответов здесь. Я предполагаю, что Вы желаете заменить символы пространства их завершенными значениями ASCII в URL. Чтобы сделать это, необходимо заменить их "%20", не просто "%". Вот решение, которое должно дать Вам полный ответ:
$ wget `echo http://maps.google.be/maps\?saddr\=$1\&daddr\=$2 | sed -e 's/\ /\%20/g'` -q -O temp.html
Обратные галочки указывают, что вложенная команда должна быть интерпретирована сначала, и результат, отправленный в wget. Заметьте, что я вышел из пространства и символов % в команде sed, чтобы препятствовать тому, чтобы они были неправильно истолкованы.-q опция для wget предотвращает вывод обработки от команды, распечатанной на экран (удобный для сценариев, когда Вы не заботитесь о вставлять состоянии), и-O опция указывает выходной файл. К вашему сведению, если Вы не хотите сохранять вывод в файл, но просто просматривать его в терминале, используйте "-" вместо имени файла для указания на stdout.
Я установил бы таблицу отдельной маршрутизации, и политика направить отмеченные пакеты с помощью той таблицы и иметь iptables/netfilter отмечают определенные пакеты.
Составьте таблицу: echo 1 known >> /etc/iproute2/rt_tables
Создайте правило маршрутизации ( ip
команда от iproute2): ip rule add from all fwmark 1 table known
Мы составили таблицу, названную "известной", и создали правило маршрутизации, которое говорит, что любой пакет с меткой, равной 1, направляется согласно "известной" таблице. Я только назвал известным, потому что это для списка известных протоколов - можно назвать его вообще, Вы хотите. Теперь мы устанавливаем известную таблицу для маршрутизации надлежащего пути.
ip route add default dev eth0 table known
Создайте правила iptables:
iptables -t mangle -I PREROUTING -p tcp --dport 111 -j MARK --set-mark 1
iptables -t mangle -I PREROUTING -p tcp --dport 2049 -j MARK --set-mark 1
Пример отмечает пакеты на портах NFS (111, 2049) с 1. Мы добавляем это правило к iptable 'искажению'. Это отличается от таблиц маршрутизации и не изменяемо; таблица искажения специально для изменяющихся пакетов всегда кроме NAT.
Теперь, для маршрутизации всего остального через другой интерфейс мы добавляем маршрут к стандартной таблице маршрутизации.
ip route add default dev eth1
Для реального понимания этого считайте разделы 4 и 11 из практического руководства LARTC.
Ну, "самый легкий" путь должен состоять в том, чтобы дать единственным программам команду использовать определенный интерфейс (или IP интерфейса. Например:
ping -I eth1 8.8.8.8
дает ping команду использовать eth1 в качестве исходного интерфейса, в то время как
wget --bind-address 10.0.0.1 http://www.google.it/
дает wget команду идти через интерфейс, который имеет 10.0.0.1
как IP-адрес.
Честно я не знаю, возможно ли это со всеми программами, Вам нужно, но это - запуск для обрезки вниз правил, для которых необходимо записать iptables
и iproute
программы.
Как запуск необходимо прочитать это учебное руководство на нескольких интернет-соединениях. Хорошее чтение является также одной из тысяч iptables учебных руководств, expecially на outbound filtering
, process
/pid filtering
и port filtering
.
Надлежащий путь к к этому состоит в том, чтобы связать () с интерфейсом, который Вы хотите использовать для исходящих пакетов. Так как можно затем настроить маршруты с ip route
и ip rule
команды, чтобы управлять, как пакеты направляются на основе их исходящего интерфейса. Для моего примера я приму следующую сеть:
Я создам две таблицы маршрутизации, один для трафика, исходящего для eth0, названного альтернативой и одной таблицей для eth1, названного основным. Таблица маршрутизации, основная всегда, существует и является нормальной таблицей, которая используется route
и ip route
команды. Большинство людей никогда не имеет дело ни с какими другими таблицами. Для составления таблицы, названной альтернативой, мы добавим следующую строку к /etc/iproute2/rt_tables
:
10 alternate
Основная таблица имеет приоритет по умолчанию 254. Правилами, для которых таблица маршрутизации в действительности, управляют ip rule
команда. По умолчанию та команда распечатает список существующих правил, которые должны выглядеть примерно так:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Это в основном говорит, что будет искать маршрут в таблице local
который является специальной таблицей, сохраняемой ядром для локальных маршрутов, таких как мой собственный IP-адрес. Это затем попробует основную таблицу и значение по умолчанию таблицы. Значение по умолчанию таблицы обычно является пробелом поэтому, если там не идет ни в какое сравнение в основном, нет никакого маршрута для хостинга. Во-первых, позволяет таблице заливки чередоваться с правилами для eth0.
sudo ip route add table alternate 192.168.0.0/24 dev eth0
sudo ip route add table alternate 192.168.1.0/24 dev eth1
sudo ip route add table alternate default via 192.168.0.1
Вы будете обычно хотеть alternate
таблица для взгляда подобным main
таблица. Единственные различия - когда маршрутизация должна отличаться. Можно хотеть не, хотят включать вторую строку выше, если Вы буквально хотите, чтобы весь NFS, HTTP, и т.д. трафик пошли через шлюз по умолчанию на eth0, даже если это предназначено для сети на eth1. Следующий шаг должен добавить правило для того, когда использовать эту альтернативную таблицу маршрутизации:
sudo ip rule add from 192.168.0.0/24 pref 10 table alternate
В этом правиле говорится, что любой трафик, прибывающий из адреса в 192.168.0 сетях, будет использовать alternate
таблица маршрутизации вместо нормального main
таблица. Последний шаг должен удостовериться все клиенты, которые должны использовать eth0
свяжите с ним. С wget
, например, набор --bind-address=192.168.0.2
, для набора NFS clientaddr=192.168.0.2
смонтируйте опцию. При использовании LibWWW с Perl можно установить localaddr опцию в LWP:: UserAgent для управления локальным интерфейсом это связывает с. Если у Вас, оказывается, есть клиент, Вы не можете управлять привязкой, и компиляция источника не является опцией, Вы смогли использовать правило iptables изменить, это - адрес, но это - больше взлома и не может работать. Вам было бы нужно правило SNAT, настроенное в цепочке PREROUTING или туземной таблицы или таблицы искажения. Вам все еще будут нужны измененные таблицы маршрутизации, данные выше, чтобы это работало.
iftop
и они каждый показывают правильный вид трафика. Огромное спасибо. – Oli 28.04.2011, 03:31iptables-save
иiptables-restore
. При использовании NetworkManager можно установить сценарии диспетчера для автоматизации процесса. К сожалению, официальная страница NM не имеет документации о функции, но Ubuntu и Дуги документация Linux оба упоминания это. – Shawn J. Goff 29.04.2011, 15:55