Недавно собрал себе сервачок из старого хлама, взгромоздил на это дело FreeBSD, поустанавливал кучу софта: вебсерверы всякие, FTP–серверы, торрентокачалки и прочее. Настроил всё это на продуктивную работу в режиме 24/7 и собрался наслаждаться жизнью. Но не тут-то было.
Порты–то закрыты — торренты не идут. А, надо сказать, FreeBSD я всего месяц назад «пощупал». Поэтому, вооружившись манами и хендбуками с гуглом наперевес, ринулся в неравный бой с закрытыми портами.
Сервер у меня ко всему выполняет роль шлюза и маршрутизатора. Берёт два интернета и пускает их мне в дом по одному кабелю. Ради этого, собственно, всё и затевалось. И долгое время на этом железе (ну, почти на этом :) крутилась замечательная штука под названием MikroTik и, справедливости ради нужно сказать, замечательно выполняла свои функции. Но хотелось их несколько расширить. А так как система MikroTik нерасширяемая без очень большого бубна, то и выбор пал на гораздо более гибкую FreeBSD.
Итак, вернёмся к нашим баранам портам. Изначально была организована система проброса портов с помощью IPFW и NATD. Всё довольно просто, в настройках NATD указываем чего хотим, протокол, IP и порт куда слать и порт назначения, для которого пришёл пакет:
- redirect_port tcp 192.168.0.2:80 80
В файерволе заворачиваем траффик на обработку в NATD и всё работает. Но… Нифига не работает! Ладно, видимо что–то не так настроил. Чтение тонн книг, километров мануалов, перекапывание всего гугла, тысяча способов настройки NATD и правил IPFW, опухшая голова, красные глаза — ноль результатов…
Решено идти другим путём. Отказался от NATD в пользу kernel NAT. К тому же это гораздо удобнее, проще и легче. весь NAT настраивается без лишних приблуд вроде NATD и Divert прямо в файерволе, а настраивается точно также (почти), как и при настройке NATD. По крайней мере то что касается проброса портов — ничем не отличается. Сделал, готово! Но… Снова не работает! Ну, наверное опять что–то где–то накосячил. Снова чтение книг, опять расшифровка мануалов, в который раз перекапывается интернет, очередные тысячи способов настройки файервола и кёрнел нат, ещё более опухшая голова и глаза, как у вампира — и ничего…
Я, конечно чайник во FreeBSD, в чём убедился уже сотню–другую раз. Но не до такой же степени, что элементарную вещь настроить не могу? :(
В общем, мучался я недели две с этой проблемой. За это время уже и сайт свой на сервак перетащил и торренто–качалку из него сделал и ещё много всякого интересного, но порты всё не открывались.
И вот тут случилось самое интересное. У меня, как я и говорил в начале, два интернета: один из местной локалки, другой из ADSL–модема, по совместительству роутера. Нет, вы не подумайте, в этом роутере порты были проброшены и ничего не менялось уже пару лет. Но, ведомый непонятными силами, я в очередной раз праздно шатался по его соответствующим настройкам, и в очередной раз убеждался в их правильности. И тут, заметил нечто, за что зацепился взгляд. В настройках проброса портов был указан адрес машины, на которую эти порты нужно пробрасывать. И он конечно же отличался от адреса моего сервака. В один момент собрались все кусочки мозаики.
А дело было так. Когда был куплен модем и подключен к компьютеру, он никак не хотел общаться с компьютером, пока методом научного тыка не было выяснено, что у IP компьютера число в последнем октете не должно быть меньше четырёх. Потом появился самодельный PC–роутер с MikroTik на борту, с которым также не хотел общаться модем по правильному, на мой взгяд, IP–адресу, в последнем октете которого двойка. А потом PC–роутер вырос до сервера с FreeBSD, с которой мой модем наконец согласился общаться по правильному IP, чему я был несказанно рад. И, так–как я не поменял настройки проброса портов в модеме, он упорно их пробрасывал на несуществующий четвёртый IP.
К слову сказать, ввести правильный IP в модеме так и не удалось. Видимо первые три адреса за чем–то зарезервированы. Так что пришлось вернуться к использованию на сервере ненавистного четвёртого IP–адреса. Зато теперь порты открыты и я доволен. :)
В ролях:
- Модем — Acorp Sprinter@ADSL LAN120M
- Сервер — Куча хлама, выдающая себя за компьютер
- Чайник — Я
- MikroTik — операционная система для построения роутеров
- FreeBSD — универсальная операционная система