Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
echo /etc/iproute2/rt_tables >> 20 TO_ETH1
или добавьте в файл /etc/iproute2/rt_tables строки соответствующие «10 TO_ETH0», «20 TO_ETH1» вручную. В скрипт эти команды добавлять не нужно, достаточно запустить их один раз.
Добавляем маршрут по умолчанию в эти таблицы:
ip route add default dev eth1 table TO_ETH1
ip route add default dev eth0 table TO_ETH0
А теперь создаем правила, в соответствии с которыми все пакеты, у которых в поле «От» указан адрес 192.168.1.10, нужно маршрутизировать в соответствии с таблицей TO_ETH1, т.е. передавать через интерфейс eth1, а все пакеты у которых в поле «От» указан адрес 192.168.0.10, передавать через интерфейс eth0.
Маркируем пакеты:
iptables –t mangle –A OUTPUT –s 192.168.0.10/24 –j MARK -–set-mark 0
iptables –t mangle –A OUTPUT –s 192.168.1.10/24 –j MARK -–set-mark 1
Маршрутизируем в зависимости от метки:
ip rule add fwmark 1 table TO_ETH1
ip rule add fwmark 0 table TO_ETH0
Теперь осталось заменить адрес, и пакет может отправляться в путешествие по сети:
iptables –t nat –A OUTPUT –s 192.168.1.10 –j DNAT -–to 192.168.0.10
Теперь наш компьютер может отвечать на запросы (например, DNS или ICMP) из обеих подключенных сетей. Можно попробовать его «попинговать» и насладиться полученным эффектом.
Инициализация и маршрутизация собственного трафика системы
Описанных действий достаточно для организации работы сервера в двух сетях, отвечающего на запросы, приходящие из обеих сетей, но не генерирующего собственного трафика.
В реальности такую ситуацию представить сложно, поэтому займемся трафиком, который генерирует сам хост.
Логика работы такова: при обращении к хосту из сети, подключенной к интерфейсу eth1, заменяем адрес сети хоста с 192.168.0.0 на 192.168.1.0, например, пишем не:
ping 192.168.0.5
а
ping 192.168.1.5
При обращении к сети, подключенной к интерфейсу eth0 все остается по-старому.
Существует один не очень приятный момент: невозможность работы с DNS-сервером сети, подключенной к интерфейсу eth1 (распространяется только на подменяемые нами адреса, т.е. все нелокальные для этой сети имена (например, интернет-имена) будут разрешаться корректно). То есть посылать DNS-запросы вы, конечно, можете, но ответы сервера теперь будут «некорректными», эта проблема решается занесением нужных, но уже откорректированных записей в файл /etc/hosts. То есть если в сети, подключенной к интерфейсу eth1, имеется хост с именем server.local и адресом 192.168.0.1, то файл /etc/hosts следует прописать server.local 192.168.1.1.