Я пытаюсь настроить сервер ubuntu для совместного доступа в Интернет из eth0 к клиентским системам на eth1, однако я хочу разрешить доступ только к входу / выходу через порт 1688, а также разрешать имена хостов, блокируя при этом весь остальной трафик. Я не уверен, какие правила IPTable необходимы для достижения этой цели, надеясь на любую помощь.
[снаружи] < --- трафик через порт 1688 ---> {eth0} [сервер Ubuntu 11.10] {eth1} < -----> [клиентские системы]
Чтобы сделать это правильно, вы действительно захотите изучить iptables, чтобы вы могли устранять любые проблемы, которые могут возникнуть. В противном случае iptables может стать для вас «черным ящиком», потому что вы не понимаете, как его использовать, и докажите себе, что проблема не в с iptables. Однако не стоит откладывать, изучение основ iptables на самом деле не так сложно, и, если вам интересно, есть много разных уроков, руководств и кулинарных книг о замечательных вещах, которые вы можете делать с iptables под вашим контролем по интернету "для комического примера).
То, что вы хотите сделать, сводится к 3 простых шага.
1) Добавьте / вставьте правило в цепочку FORWARD
для принятия TCP-порта 1688. Если вам также требуется доступ UDP, добавьте аналогичное правило, но для UDP.
2) Добавить / вставить правила для принятия TCP и UDP-порта 53 в цепочку FORWARD
.
3) Установите политику по умолчанию в цепочке FORWARD
на DROP.
После очень простого краш-курса в iptables это должно быть довольно просто, не стоит откладывать на потенциальную сложность, потому что вам не нужно знать ничего из этого, это базовые вещи.
Вам необходимо настроить сервер в качестве маршрутизатора и межсетевого экрана между этими двумя сетями.
Поэтому настройте правила брандмауэра FORWARD
на сервере, чтобы разрешить только 1688/tcp
, 53/udp
и 53/tcp
проходить через брандмауэр вашего маршрутизатора. И установите политику по умолчанию для FORWARD
- DROP
или DENY
. Попробуйте использовать такой инструмент, как ufw или shorewall для настройки брандмауэра. Это намного проще, чем использовать iptables
напрямую.
В любом случае, если вы используете iptables
напрямую, вам придется вручную изменить файл /etc/sysctl.conf
(или добавить новый файл в /etc/sysctl.conf.d/
), чтобы ваш компьютер начал маршрутизировать IP-сообщения между двумя сетями. Ищите net.ipv4.ip_forward=1
, чтобы решить это.
Хорошие инструкции можно найти в вики Ubuntu.