ip forwarding между двумя локальными сетями
У меня есть 1 сервер, который имеет 3 ник:
- Подключен к интернету
- Подключено к LAN1 (10.0.0.0/24)
- Подключено к LAN2 (192.168.0.0/28)
LAN2 имеет сервер, который работает на порту, скажем, 4444. Как я могу перенаправить трафик с определенного порта между LAN? Я хочу, чтобы только LAN1 имел доступ к Интернету, а LAN2 - нет. Все машины Ubuntu 15.04
1 ответ
Первое, что нужно сделать, это включить IP-пересылку. Это делается либо с помощью
echo "1" > /proc/sys/net/ipv4/ip_forward
Затем мы добавим правило, указывающее переадресацию трафика.
sudo iptables -A FORWARD -i LAN1 -o LAN0 -j ACCEPT
sudo iptables -A FORWARD -i LAN0 -o LAN1 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o LAN0 -j MASQUERADE
На этом пути LAN1
можно зайти в интернет через LAN0
,
Редактировать 1
Попробуй это
Пример для маршрутизации трафика для порта 4444, и вы можете реализовать для порта, который вам нужен для
Начнем с iptable. Здесь мы возьмем 4444
как сервис для маршрутизации. использование mangle
Таблица Iptable для изменения 4444
пакеты.
sudo iptables -t mangle -A OUTPUT -p tcp –dport 4444 -j MARK –set-mark 0×1
Мы помечаем все пакеты портом назначения 4444
как "0×1".
Чтобы удалить эту запись из iptables
мы можем использовать -D
вместо -A
,
Затем создайте новую таблицу маршрутов IP в /etc/iproute2/rt_table
просто давая запись
100 4444table
Написать правило для 4444
пакеты.
ip rule add fwmark 0×1 lookup 4444table
Добавить маршрут на новый стол 4444table
, Здесь мы будем использовать "192.168.1.1" в качестве шлюза для 4444
, Адрес 192.168.1.1.
Мы копируем все записи, кроме записи шлюза по умолчанию из основной таблицы.
sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 4444table $ROUTE; done
Добавить запись шлюза по умолчанию для 4444
пакеты к столу 4444table
sudo ip route add default via 192.168.1.1 table 4444table
использование ip route show table 4444table
показать все маршруты на 4444table
,