Метка: iptables

  • iptables пробросить порт

    есть ubuntu шлюз надо чтоб с инета был доступен нейкий сервис на внутренней машине

    iptables -t nat -A PREROUTING -p tcp -d 91.195.101.20 --dport 7888 -j DNAT --to-destination 192.168.100.251:7888
    iptables -t nat -A POSTROUTING -p tcp --dst 192.168.100.251 --dport 7888 -j SNAT --to-source 91.195.101.20Code language: Bash (bash)

    Первое правило подменяет ip приёмника на внутренний ип, а второе обратно подменяет ип отправителя на внешний.

  • ubuntu vpn server

    Настройка VPN Сервера на базе Ubuntu 8.04

    ставим pptpd

    sudo apt-get install pptpdCode language: Bash (bash)

    редактируем

    /etc/pptpd.confCode language: Bash (bash)

    ищем строки похожие на

    localip 192.168.100.4
    remoteip 192.168.100.20-51Code language: Bash (bash)

    Снимаем комментарии перед ними
    localip — ИП адрес будущего VPN сервера
    remoteip — ИПы, которые будут выдаваться клиентам

    Редактируем
    /etc/ppp/chap-secrets

    # client        server  secret                  IP addresses
    user             pptpd   pass                192.168.100.0/13Code language: Bash (bash)

    (вот тут структуру бы не нарушать пробелы и табы не путать)

    user — логин
    pass — его пароль
    192.168.10.0/13 — диапазон ИП с которого он будет присоединяться

    Дальше пробуем запустить pptpd

    sudo /etc/init.d/pptpd restartCode language: Bash (bash)

    всё запустилось, создаём VPN подключение на клиенте.
    Не забываем снять галочку на вкладке «безопасность» «требовать шифрование иначе отключаться»
    после чего я смог подключится к серверу.

    Дальше чтоб можно было использовать остальные интерфейсы сервера, я добавил

    echo 1 > /proc/sys/net/ipv4/ip_forwardCode language: Bash (bash)

    чтоб это не терялось при перезагрузке надо в

    /etc/sysctl.conf раскомментировать net.ipv4.ip_forward = 1

    Дальше iptables надо сказать чтоб работали НАТ,ом

    iptables -t nat -A POSTROUTING -s 192.168.10.0/16 -o eth0 -j MASQUERADECode language: Bash (bash)

    Это значит, что всё, что приходит с 192.168.Х.Х слать на eth0 (то что смотрит в инет)

    Проверил пинги до своего внешнего сервера (по ипу, всё было замечательно но DNS не отзывались)
    для переброски DNS имён я использовал dnsmasq

    $sudo apt-get install dnsmasqCode language: Bash (bash)

    в файле

    /etc/dnsmasq.conf:Code language: Bash (bash)

    я прописал

    listen-address=192.168.10.1Code language: Bash (bash)

    дальше

    /etc/init.d/dnsmasq restartCode language: Bash (bash)

    Теперь надо, чтоб автоматически при подключении мне выдавался правильный ДНС сервер.
    идём в /etc/ppp/options
    раскомментировал строку

    ms-dns 192.168.10.1Code language: Bash (bash)

    и вписал туда свой днс сервер.

    /etc/init.d/pptpd restartCode language: Bash (bash)

    и в бой.

    PS
    проявилась одна проблема, что некоторые сайты не желали открываться например mail.ru
    один добрый дядька rtzra посоветовал 2 пути решения, одо из которых должно было помочь

    первое:

     iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtuCode language: Bash (bash)

    второе:

     iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 128Code language: Bash (bash)

    Мне помогло второе

    Удачи :))

  • Прозрачный прокси (NAT) для небольшой сети

    Заметка больше для себя 🙂
    Всегда раздавал инет в организации через squid3, но тут захотел сделать всё удобно и для себя и для людей.

    Ман не полный, но может кому поможет, а может кто дополнит 🙂

    OS ubuntu 8.04 server

    Нам потребуется софт (как установить думаю знаете)

    1) dhcp у меня уже действовал (dhcp3-server)
    2) dnsmasq Для трансляции днс запросов (умеет кстати быть dhcp сервером) (тут ставьте самую новую обязательно)
    3) squid3 (для передачи http трафика) (можно и без него пустить если через него то для файрвола сначало надо добавить правило

    iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080,443 -j DNAT --to 192.168.100.192:3128Code language: Bash (bash)

    )
    4) iptables (у меня уже был установлен)

    в /etc/squid3/squid.conf добавил

    http_port 3128 transparent
    visible_hostname proxy
    acl our_networks src 192.168.100.0/255.255.255.0
    http_access allow our_networksCode language: Bash (bash)

    DHCP говорим выдавать кому надо шлюз по умолчанию тот комп, который будет шлюзом
    Можно и ручками прописать тому кто нуждается.

    далее в консоли разрешаем форвардинг

    echo 1 > /proc/sys/net/ipv4/ip_forwardCode language: Bash (bash)

    дальше в консоли говорим апитейблсам перебрасывать всё что приходит на ppp0

    iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADECode language: Bash (bash)

    Дальше ручками указал на внутренней машине настройки сети
    ИП, маску, шлюз и днс(такойже как и шлюз)

    Пинги идут rdp работает аська ирк браузер 🙂
    Но учтите, что при перезагрузке правило для иптейблса сбросится
    Поэтому читаем вот этот пост