|
Определение IP-адреса пользователя в Telegram через голосовой вызов (доп. ссылка 1) (доп. ссылка 2) |
[комментарии]
|
| По умолчанию Telegram устанавливает прямой канал связи при осуществлении
голосового вызова пользователя, присутствующего в адресной книге (в настройках
можно выборочно отключить использование P2P и направлять трафик только через
внешний сервер). При инициировании соединения для обхода NAT в Telegram
применяется протокол STUN (Session Traversal Utilities for NAT), который
передаёт информацию об адресах звонящего и принимающего звонок в поле
XOR-MAPPED-ADDRESS. Соответственно, если в настройках "Security and Privacy" не
отключён P2P, звонящий может узнать IP-адрес того, кому адресован звонок. Метод
подойдёт и для любых других приложений, использующих STUN.
Для определения IP-адреса следует во время осуществления вызова записать дамп
трафика в формате pcap, например, при помощи утилиты tcpdump или tshark, после
чего воспользоваться готовым скриптом
https://github.com/n0a/telegram-get-remote-ip/ или при помощи штатных утилит
проанализировать значение поля XOR-MAPPED-ADDRESS:
tshark -w dump.pcap -a duration:5
cat dump.pcap |
grep "STUN 106" |
sed 's/^.*XOR-MAPPED-ADDRESS: //' |
awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' |
awk '!seen[$0]++'
|
|
|
|
|
Мультиплексирование ssl/ssh соединений через один 443 порт (доп. ссылка 1) |
[комментарии]
|
| В рамках проекта sslh (http://www.rutschle.net/tech/sslh.shtml) развивается
мультиплексор ssl/ssh соединений, способный принимать соединения на одном порту
и перебрасывать их в зависимости от типа протокола. Поддерживается широкий
спектр протоколов, среди которых HTTP, HTTPS, SSH, OpenVPN, tinc и XMPP.
Наиболее востребованным применением sslh является обход межсетевых экранов,
допускающих только ограниченное число открытых портов.
Например, запустив sslh за пределами межсетевого экрана на 443 порту, можно
организовать работу SSH и любых других протоколов: соединение с внешней системы
будет производиться на 443 порт, но пробрасываться на локальный 22 порт, при
этом штатные HTTPS-запросы будут перебрасываться на localhost:443.
Для обеспечения работы такой схемы sslh следует запустить с опциями:
sslh --user sslh --listen 192.168.10.15:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443
где, "--user sslh" определяет пользователя, под которым следует запустить sslh;
"--listen 192.168.10.15:443" - IP и порт для приёма внешних соединений;
"--ssh 127.0.0.1:22" - IP и порт для проброса SSH
"--ssl 127.0.0.1:443" - IP и порт для проброса HTTPS
|
|
|
|
|
Проброс 802.1q/access порта в Linux через IP-сеть |
Автор: Roman Timofeev
[комментарии]
|
| В 2007 году я написал [[https://www.opennet.ru/tips/info/1389.shtml заметку]] с похожим названием.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Выявление NAT-устройства в сети |
Автор: Kirill
[комментарии]
|
| Значения TTL в популярных ОС известны
(http://www.binbert.com/blog/2009/12/default-time-to-live-ttl-values/), например,
в Linux 2.6.x и FreeBSD - 64, в Windows - 128.
Если в сети имеется маршрутизатор на базе *nix или если есть возможность
завернуть трафик на определенный хост, или настроен PBR на прозрачный прокси -
на этой машине нужно выполнить:
# tcpdump -vv -n -i @interface@ 'ip[7:2] != 128 and ip[7:2] != 64'
Соответственно, если пакеты приходят с вашего маршрутизатора после PBR,
значение TTL нужно уменьшить на 1.
Но эта информация неточная, так как TLL в ОС можно поменять.
Также полезным дополнением внутри этой команды будет 'src net @ваша внутренняя
сеть@' и 'src net not @сеть, которую нужно исключить@'.
|
|
|
|
|
Организация доступа к IPTV через NAT (доп. ссылка 1) |
Автор: Антон Каукин
[комментарии]
|
| Инструкция для желающих настроить Multicast Routing на Linux шлюзе, обеспечивающем работу клиентов через NAT.
Для переброса IGMP-трафика между подсетями будем использовать демон igmpproxy (http://sourceforge.net/projects/igmpproxy)
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Настройка пакетного фильтра PF для проброса SIP-телефонов через NAT (доп. ссылка 1) (доп. ссылка 2) |
Автор: argo
[комментарии]
|
| Во FreeBSD для включения PF указываем в /etc/rc.conf:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Трансляция адресов во FreeBSD средствами ng_nat (доп. ссылка 1) |
Автор: Folio
[комментарии]
|
| Для работы этого примера необходимо иметь подгруженный ng_ipfw.ko
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Port mapping и открытие портов наружу во FreeBSD 7.1 (ipfw + kernel nat) |
Автор: reZon
[комментарии]
|
| Для начала надо пересобрать ядро со следующими опциями
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Интернет-шлюз с использованием PF |
Автор: vitalic
[комментарии]
|
| O пакетном фильтре (PF) написано довольно много статей. Вот и я хочу предложить свою реализацию Интернет-шлюза с
использованием PF. Раздача Интернета для локальной сети происходит через NAT и основана на Packet Tagging. Плюсом этого
метода является то что упрощается настройка правил для FTP (ftp-proxy не используется), как для клиентов за шлюзом, так и для
возможной публикации "внутреннего" ftp-сервера в мир.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
ipfw nat во FreeBSD 7 |
Автор: Pikador
[комментарии]
|
| В конфигурацию ядра добавляем: ... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Настройка работы ipnat под большой нагрузкой (доп. ссылка 1) |
Автор: Антон Южанинов
[комментарии]
|
| Для работы ipnat под большой нагрузкой (много трансляций) нужно
перед сборкой ядра изменить в файле /usr/src/sys/contrib/ipfilter/netinet/ip_nat.h
#undefine LARGE_NAT
на
#define LARGE_NAT
|
|
|
|
|
Балансировка двух каналов средствами ipfw под FreeBSD |
Автор: Ivan Voytas
[комментарии]
|
| natd -p 8668 -a ip1
natd -p 8669 -a ip2
ipfw add divert 8668 ip from any to ip1 recv if1
ipfw add divert 8669 ip from any to ip2 recv if2
ipfw add check-state
ipfw add prob 0.5 divert 8668 ip from 192.168.0.0/16 to any xmit if1 keep-state
ipfw add divert 8669 ip from 192.168.0.0/16 to any xmit if1 keep-state
ipfw add fwd gw1 ip from ip1 to any out xmit if1 (если default на if1)
ipfw add fwd gw2 ip from ip2 to any out xmit if1
|
|
|
|
|
В двух словах про включение NAT и Firewall в ОС FreeBSD (доп. ссылка 1) |
Автор: hub.ru
[комментарии]
|
| Что бы поднять NAT и Firewall на FreeBSD надо:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
pf и трансляция адресов на двух интерфейсах |
Автор: DelGod
[комментарии]
|
| Решение оптимизировано для шлюза на флешке (не используется perl и другие "тяжелые" решения)
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Проброс портов с двух различных gateway на внутренний сервер через IPNAT |
Автор: Жека
[комментарии]
|
| Иногда необходимо пробросить порты с двух различных gateway GW1 и GW2 на один внутренний сервер,
у которого в качестве default GW указан GW1.
Прямой проброс и NAT невозможен, т.к. пакеты пришедшие из GW2 попытаются
вернуться по маршруту через GW1.
Есть следующий выход, это двойной NAT на GW2, при котором запрос приходит не
снаружи, а с внутреннего IP.
ed0 - внешний интерфейс
lnc0 - интерфейс смотрящий внутрь.
в ipnat.rules нужно прописать следующее:
map ed0 10.6.10.0/24 -> 0.0.0.0/32 мапим локалку наружу
map lnc0 0.0.0.0/0 -> 0.0.0.0/32 ремап внешних ip в локальные
rdr ed0 0.0.0.0/0 port 80 -> 10.6.10.2 port 80 tcp форвард на внутренний сервер
|
|
|
|
|
Пример настройки NAT для двух сетей в FreeBSD 5.3 (доп. ссылка 1) |
Автор: Vov
[комментарии]
|
| Стоит задача - выпустить свою сеть в инет через два разных интерфейса rl1 и rl2.
Так как адреса в локали серые, то надо поднимать NAT. С учетом того, что динамической маршрутизации
не предвидится, будем поднимать NAT на 2 интерфейса. Для этого нужно:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Особенности использование ftp из-за фаервола ipfw/natd |
Автор: globus
[комментарии]
|
| Необходимо выпустить пользователей на ftp сайты из локальной сети, но при этом не устанавливая
дополнительного ПО, используя только возможности FreeBSD 4.10.
Этими возможностями, как ни странно, оказались ipfw и natd
вот собственно как все это прописывается.
Исходные данные, FreeBSD 4.10 + настроенный nat правила для ipfw
ipfw -q add 100 divert natd from 192.168.20.0/24 to any 20, 21 out via $oif
ipfw -q add 200 divert natd from any 20, 21 to $iip in via $oif
ipfw -q add 300 allow tcp from any to any established
ipfw -q add 400 allow tcp from any to any setup
где $oif и $iip соответственно внешний интерфейс и внешний IP
теперь запускаем natd
/sbin/natd -m -s -u -punch_fw 500:200 -n xl1
заострю внимание на параметре "-punch_fw" -этот параметр создает в фаерволе "ходы",
добавляя динамические правила. В моем случае эти правила начнутся с номера 500
и будет их добавлено
максимум 200 (понятно чем больше сеть, те больше нужно правил).
Особое спасибо A Clockwork Orange.
|
|
|
|
|
Как в FreeBSD перебросить соединение через NAT во внутреннюю сеть (доп. ссылка 1) |
Автор: spanka
[комментарии]
|
| Вот реализация для ipfw:
if1IP="ип_смотрящий_в_инет", if1="интерфейс_смотрящий_в_инет"
ifLIP="ип_на_который хотим делать редирект"
ipfw add divert natd tcp from any to ${if1IP} 80 via ${if1}
ipfw add divert natd ip from any to ${ifLIP} to any via ${if1}
ipfw add allow tcp from any to ${if1IP} 80 via any
natd -n ${if1} -redirect_port tcp ${ifLIP}:80 80
Решение от miaso <torov@wipline.ru>:
tproxy -s 80 -r nobody -l /var/log/transparent_proxy.log [int_ip] 80
|
|
|
|
|
Как в Linux перебросить соединение через NAT во внутреннюю сеть (доп. ссылка 1) |
Автор: Dimez
[комментарии]
|
| Первый путь - пробрасывание только порта:
1) iptables -t nat -A PREROUTING -p tcp -d EXT_R_IP --dport 10000 -j DNAT --to-destination LOCAL_IP:80
2) iptables -A FORWARD -i eth0 -d LOCAL_IP -p tcp --dport 22 -j ACCEPT
Второй вариант - выброс всей машины наружу (если есть свободные адреса):
1) ifconfig eth0:0 NEW_IP netmask NETMASK broadcast BROADCAST
2) route add NEW_IP gw GW netmask 0.0.0.0 metric 1 dev eth0:0
3) iptables -t nat -A PREROUTING -p tcp -d NEW_IP -j DNAT --to-destination LOCAL_IP
4) iptables -A FORWARD -i eth0 -d LOCAL_IP -j ACCEPT
Обозначения: EXT_R_IP - внешний IP роутера, LOCAL_IP - внутренний IP машины,
которую хочешь выбросить
NEW_IP - новый IP на который хочешь посадить машину, которая имеет локальный LOCAL_IP
NETMASK, BROADCAST, GW - внешние netmask, broadcast и gateway
|
|
|
|
|
Пример настройки NAT с привязкой к IP под Linux |
[комментарии]
|
| Пример настройки NAT с привязкой к IP под Linux
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -o eth0 -j SNAT --to-source 212.23.98.45
или (без привязки к IP)
ipchains -A forward -j MASQ -s 192.168.0.0/16 -d 0.0.0.0/0
или (через iproute2)
ip rule add from 10.0.1.0/24 nat 254.147.38.14
Другой способ трансляции адресов:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -j MASQUERADE
|
|
|
|
|
Как организовать редирект порта на внутреннюю машину через ipnat в FreeBSD. |
[комментарии]
|
| man 5 ipnat в /etc/ipnat.conf:
rdr fxp0 205.15.63.3/32 port 80 -> 192.168.1.1 port 80 tcp
# Базансировка нагрузки между 2 IP:
rdr le0 203.1.2.3/32 port 80 -> 203.1.2.3,203.1.2.4 port 80 tcp round-robin
|
|
|
|
|
Как настроить NAT (транслятор адресов) для нормальной работы с FTP и ICQ в Linux |
[комментарии]
|
| iptables:
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_nat_irc
ipchains:
modprobe ip_masq_ftp
modprobe ip_masq_raudio
modprobe ip_masq_irc
modprobe ip_masq_icq
|
|
|
|
|
Как обеспечить работу active FTP режима в FreeBSD NAT |
[обсудить]
|
| В ipnat воспользуйтесь модулем ftp proxy:
map fxp0 0/0 -> 0/32 proxy port ftp ftp/tcp
map rl0 172.16.33.0/24 -> 212.46.231.50/32 proxy port ftp ftp/tcp
не забудьте поместить правило трансляции ftp перед общим правилом трансляции,
порядок следования правил важен.
|
|
|
|
|
Как запустить трансляцию адресов (NAT) под FreeBSD |
[комментарии]
|
| В /etc/rc.conf:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|