+------------+
| Интернет |
+------------+
|
|
10.71.5.2(eth0)
+----------------+
| Linux-сервер |
+----------------+
192.168.66.1(eth1)
|
|
192.168.66.5
+--------------------+
| комп в локалке |
+--------------------+
Перед нами стоит задача пробросить порты через линукс-сервер для работы DC++ на компе в локалке, допустим это будут порты TCP:10001, UDP:10001 или любые другие свободные порты по вашему выбору, причем порты для каждого компа в локалке должны быть строго уникальны. Здесь стоить отметить, что для каждого отдельно взятого компа в локалке придется создавать свой блок правил для iptables, которые мы рассмотрим ниже.
Итак, чтобы все у нас работало, необходимо на сервере по root'ом выполнить следующие две пары команды:
iptables -t nat -I PREROUTING -p tcp --dport 10001 -j DNAT --to 192.168.66.5:10001 #Это правило превращает пакет из ВХОДЯЩЕГО в "ПРОХОДЯЩИЙ СКВОЗЬ"
iptables -I FORWARD -p tcp -d 192.168.66.5 --dport 10001 -j ACCEPT # Это правило собственно разрешает прохождение таких пакетов
iptables -t nat -I PREROUTING -p udp --dport 10001 -j DNAT --to 192.168.66.5:10001
iptables -I FORWARD -p udp -d 192.168.66.5 --dport 10001 -j ACCEPT
Теперь сохраняем настройки фаервола (справедливо для AltLinux)
serviсe iptables save
После такой команды наши правила сохряняться в /etc/sysconfig/iptables (справедливо для AltLinux, но вообщето зависит от дистрибутива) и после перезагрузки наши внесенные правила никуда не исчезнут, т к будут сохраненны в дефолтный конфигурационный файл фаервола :-)
Далее рестартуем фаервол
service iptables restart
Теперь пользователь с 192.168.66.5:10001 сможет качать на хабе с других пользователей в пределах своего провайдера, т к как мы не рассматривали возможность приобретения выделенного реально маршрутизируемого ("белого") IP-адреса для присвоения его нашему linux-серверу. Впрочем, если провайдер может предоставлять выделенные статические "белые" адреса, то пользователи локальной сети смогут качать на дц++ хабах не только своего провайдера, но так же и глобальной сети Интернет.
Теперь осталось только настроить DC++ клиент, в нашем случае мы будем использовать программу FlyLinkDC++ под windows.
Запускаем программу, далее заходим Файл - Настройки - Настройки соединения.
Здесь прописываем:
- Сетевой интерфейс для всех соединений = 192.168.66.5
- отмечаем "Брандмауэр с ручным перенаправлением портов"
- Внешний / WAN IP = 10.71.5.2
- TCP=10001
- UDP=10001
P.S.: Практически сей мануал на "живом" сервере не проверялся, однако теоретически должен работать. Всю информацию вы используете на свой страх и риск. :-)
1 комментарий:
>> Строку
iptables -I FORWARD 1 -p tcp -i eth0 --dport 10001 -j ACCEPT
>> надо заменить на
iptables -I FORWARD -p tcp -d 192.168.0.2 --dport 10001 -j ACCEPT
И тогда энто будет работать ^_^
(c) TrenAr
Отправить комментарий