doc:os:ubuntu:setting_up_gateway_in_case_external_port-forwarding
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| doc:os:ubuntu:setting_up_gateway_in_case_external_port-forwarding [d.m.Y H:i] – dbehterev | doc:os:ubuntu:setting_up_gateway_in_case_external_port-forwarding [d.m.Y H:i] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Настройка шлюза в случае внешнего порт-форвардинга ====== | ||
| + | Итак, пусть в компании имеется два шлюза с внутренними IP адресами: | ||
| + | * Windows-шлюз 192.168.0.90 | ||
| + | * Ubuntu-шлюз 192.168.0.250 | ||
| + | Шлюз с IP 192.168.0.90 выполняет проброс порта PPTP (TCP 1723) на другой шлюз с IP 192.168.0.250. Такое имеет место быть: Ubuntu-шлюз подключен к WiMax провайдеру Yota и не имеет доступного извне IP адреса, | ||
| + | Итак, вы настроили проброс с Win-шлюза по порту PPTP на Ubuntu шлюз, но ничего не работает... | ||
| + | Посмотрим на таблицу маршрутизации на Ubuntu-шлюзе: | ||
| + | < | ||
| + | route -n | ||
| + | Таблица маршутизации ядра протокола IP | ||
| + | Destination Gateway Genmask Flags Metric Ref Use Iface | ||
| + | 192.168.0.240 | ||
| + | 192.168.0.0 | ||
| + | 10.133.112.0 | ||
| + | 0.0.0.0 | ||
| + | </ | ||
| + | Мы видим, что имеется 1 маршрут по-умолчанию, | ||
| + | Решим проблему с помощью дополнительной таблицы маршрутизации. | ||
| + | |||
| + | **1.** Добавим в файл / | ||
| + | < | ||
| + | 4 4 | ||
| + | </ | ||
| + | Для удобства я всегда присваиваю для обоих полей числовой номер. Мы создали новую дополнительную таблицу маршрутизации с номером 4 и именем 4. Пока она пуста: вывод ip route show table 4 пуст. | ||
| + | |||
| + | **2.** Будем работать с таблицей mangle IPtables. Таблица mangle используется для модификации проходящих пакетов TCP/IP и работаем с пятью " | ||
| + | * До версии ядра 2.4.17: PREROUTING - для модификации входящих пакетов перед маршрутизацией; | ||
| + | * До версии ядра 2.4.17: OUTPUT (для модификации локально-сгенерированных пакетов перед маршрутизацией) | ||
| + | * INPUT - для модификации пакетов, | ||
| + | * FORWARD - для модификации пакетов, | ||
| + | * POSTROUTING - для модификации пакетов, | ||
| + | |||
| + | Поскольку мне нужно направить локально-сгенерированные пакеты по нужному маршруту, | ||
| + | < | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | Т.е. все локально-сгенерированные пакеты, | ||
| + | <note tip> | ||
| + | |||
| + | **3.** Пишем простой скрипт для инициализации дополнительной таблицы маршрутизации: | ||
| + | < | ||
| + | #!/bin/sh | ||
| + | |||
| + | echo "Erase the route..." | ||
| + | |||
| + | INET_GW=" | ||
| + | |||
| + | /bin/ip route flush cache | ||
| + | /bin/ip route flush table 4 | ||
| + | |||
| + | echo "Copy main routing table to table 4 (ID 4)" | ||
| + | |||
| + | /bin/ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 4 $ROUTE ; done | ||
| + | /bin/ip route add table 4 default via $INET_GW | ||
| + | |||
| + | /bin/ip rule add fwmark 4 table 4 | ||
| + | |||
| + | /bin/echo 0 > / | ||
| + | /bin/echo 0 > / | ||
| + | </ | ||
| + | В этом скрипте мы очищаем таблицу маршрутизации и добавляем в нее все имеющиеся маршруты, | ||
| + | |||
| + | Теперь надо, чтобы дополнительная таблица маршрутизации инициализировалась каждый раз при старте системы, | ||
| + | < | ||
| + | auto wimax0 | ||
| + | iface wimax0 inet dhcp | ||
| + | pre-up iptables-restore < / | ||
| + | up / | ||
| + | </ | ||
| + | |||
| + | TAG: {{tag> | ||
