Маршрут просмотра веб-страниц через отдельный интерфейс

Я хотел бы направить просмотр веб-страниц через интерфейс wlan0, а остальные через eth1. Можете ли вы помочь мне с командами iptables для достижения этой цели. Ниже моя конфигурация. Спасибо:)

Изменить: Это касается конфигурации рабочего стола, а не настройки веб-сервера. По сути, я хочу использовать одно из своих подключений для просмотра веб-страниц, а другое - для всего остального.

Ifconfig:

eth1      Link encap:Ethernet  HWaddr 00:1d:09:59:80:70  
          inet addr:192.168.2.164  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::21d:9ff:fe59:8070/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:33 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4771 (4.7 KB)  TX bytes:7081 (7.0 KB)
          Interrupt:17



wlan0     Link encap:Ethernet  HWaddr 00:1c:bf:90:8a:6d  
          inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21c:bfff:fe90:8a6d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:77 errors:0 dropped:0 overruns:0 frame:0
          TX packets:102 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14256 (14.2 KB)  TX bytes:14764 (14.7 KB)

маршрут:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     *               255.255.255.0   U     1      0        0 eth1
192.168.1.0     *               255.255.255.0   U     2      0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
default         adsl            0.0.0.0         UG    0      0        0 eth1

4 ответа

Пара правил iptables в соответствии с:

-A MY_OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A MY_OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT 

не допустит ничего, кроме запросов на просмотр веб-страниц, покидающих ваш сервер Linux, но, как уже было сказано, вам нужно знать, как управлять iptables, в противном случае вы рискуете совершить ошибки.

В любом случае запросы на просмотр веб-страниц предположительно поступают с клиентских ПК в вашей локальной сети? Возможно, вы используете сервер Linux в качестве маршрутизатора / шлюза, иначе как он будет перехватывать трафик с вашего клиентского ПК? Если это так, я бы действительно рекомендовал вместо этого использовать готовый маршрутизатор; Например, для небольшой сети стандартное устройство Netgear обеспечит простой веб-интерфейс управления, с помощью которого вы сможете реализовать правила брандмауэра, в то время как сервер Linux, подключенный к Интернету без достаточного опыта iptables, действительно вызывает проблемы.

Можно написать правила iptables, которые соответствуют номерам портов, но это не будет моей рекомендацией, просто потому что правила iptables легко ошибиться. Ткане может ссылаться на исходящие запросы на веб-страницы из своей локальной сети, а не на входящий доступ к общедоступному веб-серверу - в этом случае прокси-сервер может быть ответом. По моему опыту, Squid является отличным пакетом для этой цели и может также использоваться для обеспечения политики допустимого использования. Если вы идете по этому пути, не забудьте реализовать функцию автоматического обнаружения веб-прокси. Если, с другой стороны, это делается с целью предоставления услуг внешним пользователям в Интернете, то создание DMZ было бы правильным подходом, на мой взгляд. Возможно, вы все же захотите написать несколько простых правил iptables на самом веб-сервере, чтобы отбрасывать трафик, отличный от того, который предназначен для портов 80 и 443, но блокировка нежелательного трафика на готовом маршрутизаторе или брандмауэре с веб-интерфейсом управления скорее всего, будет более простым.

Вы не можете контролировать веб-трафик по сравнению с другими типами трафика с помощью iptables. Почему бы и нет? Единственный способ определить, что является или не является веб-трафиком, - это какой порт используется. Я полагаю, что веб-трафик использует в основном порт 80 для http и 443 для https.

Чтобы направить веб-трафик на определенный интерфейс, вот что вам нужно сделать на высоком уровне.

Вы должны настроить серверы доменных имен (DNS) так, чтобы доменное имя указывало на IP-адрес вашего маршрутизатора, а затем настроить маршрутизатор на переадресацию порта с порта 80 на адрес wlan0, который равен 192.168.1.70.

Вы также можете настроить свой веб-сервер так, чтобы он слушал только интерфейс wlan0, хотя это, вероятно, не потребуется после правильной маршрутизации всех веб-портов на wlan0.

(Я предполагаю, что у вас должен быть маршрутизатор, потому что IP-адреса, которые вы даете, начинаются с 192.168. Таким образом, они являются адресами локальной сети, которые не могут использоваться на DNS-сервере или доступны через Интернет. Это означает, что у вас должен быть маршрутизатор, который виден в интернете, а затем перенаправляет порты туда, куда вы хотите.)

Кроме того, вы сказали, что хотите, чтобы "весь другой трафик" перешел на eth1. Какой другой трафик? Если вы ссылаетесь на электронную почту, вы можете настроить переадресацию портов для этих портов, чтобы они указывали на интерфейс eth1.

Фактически, вы, вероятно, можете настроить переадресацию портов для отправки "всех других портов" на eth1. Однако это считается очень небезопасным и может дать хакерам шанс проникнуть на ваш сервер. Общая практика заключается в перенаправлении только определенных портов для выбранного трафика, который вы хотите разрешить на ваш сервер.

Для этого вам нужно использовать политику маршрутизации с маркировкой брандмауэра, потому что вы хотите маршрутизировать на основе чего-то другого, кроме IP-адресов источника и назначения.

Сначала вам нужно настроить отдельную таблицу маршрутизации, которая будет отправлять пакеты wlan0.

echo 1 wlan0 >> /etc/iproute2/rt_tables
ip route add 192.168.1.0/24 dev wlan0 table wlan0
ip route add default via 192.168.1.1 table wlan0

(Первая команда должна выполняться только один раз.)

Затем мы сообщаем механизму маршрутизации использовать эту новую таблицу для пакетов с отметкой "1".

ip rule add fwmark 1 lookup wlan0

И наконец, мы используем iptables для маркировки пакетов, которые нас интересуют.

iptables --table mangle --append PREROUTING --protocol tcp --dport http --jump MARK --set-mark 1
iptables --table mangle --append PREROUTING --protocol tcp --dport https --jump MARK --set-mark 1
Другие вопросы по тегам