1

Могу ли я в dd-wrt ограничить доступ из "внешнего мира" к одной машине с белым списком IP-адресов? Поэтому я хочу разрешить доступ с одного IP-адреса "внешнего мира" к одному компьютеру в моей сети, и все остальные компьютеры должны принимать вызовы от любого внешнего абонента.

2 ответа2

2

dd-wrt позволяет использовать iptables. Команды брандмауэра можно вставить в графический интерфейс dd-wrt по адресу: Администрирование-> Команды -> [введите команды в текстовом поле-> Сохранить брандмауэр.

Я украл, извините, цитирую следующее из вики dd-wrt:

Предположим, я мог бы добавить правило, чтобы я мог подключиться к SSH через мой конкретный хост / адрес снаружи. Тогда я мог бы напечатать следующее:

iptables -A INPUT -p tcp -s 150.100.whatever.something --dport 22 -j logaccept

Поэтому я говорю: добавьте в цепочку INPUT правило, разрешающее протокол tcp, с адресом источника трафика, предназначенного для порта 22 на моем маршрутизаторе, перейдите к logaccept. Я мог бы использовать -j ACCEPT, который просто переходит к ACCEPT, но в этом случае я хочу зарегистрировать его просто для отслеживания, поэтому я использую logaccept, цепочку, которую мы создали для этой цели.

Примечание: простого добавления правила в цепочку INPUT может быть достаточно, чтобы разрешить удаленный доступ по SSH из глобальной сети. Однако, если ваш маршрутизатор все еще находится в режиме NAT/Gateway и вы хотите переназначить порт SSH на что-то менее традиционное на стороне WAN (скажем, порт 2222), вы можете вместо этого вставить правило PREROUTING. Это на самом деле, как GUI делает это, когда вы включаете удаленное управление WAN SSH.

iptables -A INPUT -p tcp -m tcp -d `nvram get lan_ipaddr` --dport 22 -j logaccept  
iptables -t nat -A PREROUTING -p tcp -m tcp -d `nvram get wan_ipaddr` --dport 2222 -j DNAT --to-destination `nvram get lan_ipaddr`:22
1

Правила iptables читаются в цепочке, поэтому в зависимости от того, какое правило выполняется первым, используется. В моем примере правила ПРИЛОЖЕНЫ к нижней части цепочки (с помощью опции -A). Там, где вы говорите, вы уже перенаправили порт 22, я предполагаю, что вы сделали это через графический интерфейс, что хорошо, и что графический интерфейс пользователя просто переводит это в правило iptables, которое вы можете просмотреть с помощью команды

iptables -vnL

который показывает полный список правил таблиц IP в месте.

Относительно вашего второго комментария: iptables применяется только тогда, когда ваш трафик пересекается между частями WAN и LAN вашего маршрутизатора, то есть, если ваш адрес находится в частном диапазоне (192.168.xx), то доставка до нужного хоста в LAN завершена используя только интерфейсы локальной сети, тогда как публичные адреса пакетов, исходящих из локальной сети, автоматически отправляются в глобальную сеть для доставки.

Интересный эксперимент, который вы можете выполнить, чтобы проверить это поведение, состоит в том, чтобы попытаться подключиться к вашему внутреннему хосту с использованием внутреннего адреса, например 192.168.xx:22, а затем, с отключенной переадресацией портов для этого порта в графическом интерфейсе dd-wrt, подключитесь к своему внешнему IP-адресу (найдите его, посмотрев в графическом интерфейсе dd-wrt) на тот же порт, например 76.54.999.257:22 (за исключением использования реального адреса, конечно). Если переадресация портов отключена, вы увидите, что внутреннее соединение работает там, где внешнее не работает.

Вы можете настроить поведение того, что dd-wrt считает портом на стороне WAN, и портом на стороне LAN, использующим VLAN и т.д., Чтобы фактически логически группировать физические порты странным образом, но это выходит за рамки вопроса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .