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> |