Добро пожаловать на форум, Гость!
Войдите или зарегистрируйтесь!
Имя пользователя:   Пароль:  
Запомнить меня 




Начать новую тему Ответить на тему   [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: NAT via iptables to VirtualMachine [Решено]
СообщениеДобавлено: 17 апр 2010, 10:53 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
Надо кинуть инет на виртульную машину. Сама виртуальная машина настроена как Host-Only Adapter. в таком случае инет кидаеться. Но где то у меня косяк. хз где

Код:
#!/bin/sh
#------------------------------------------------------------------------------
# Переменные
#------------------------------------------------------------------------------
IPT='/sbin/iptables' #iptables
MODPROBE="/sbin/modprobe"
ARP="/usr/sbin/arp"
IP6TABLES=/sbin/ip6tables
TC=/sbin/tc
INDEV=ppp0
#------------------------------------------------------------------------------
# Логи наше все
#------------------------------------------------------------------------------
LOG="LOG --log-level debug --log-tcp-sequence --log-tcp-options"
LOG="$LOG --log-ip-options"
#------------------------------------------------------------------------------
# лимит
#------------------------------------------------------------------------------
RLIMIT="-m limit --limit 3/s --limit-burst 8"
#------------------------------------------------------------------------------
# КГ Сетки
#------------------------------------------------------------------------------
aknet='212.112.96.0/19'
asia='195.38.160.0/19'
bitel='194.176.111.0/24'
bmc='85.26.220.0/22'
city='212.2.224.0/19'
comintech='81.20.16.0/20'
elcat1='212.42.96.0/19'
elcat2='77.95.56.0/21'
elcat3='94.143.192.0/21'
kt1='212.241.0.0/19'
kt2='212.97.0.0/19'
kt3='213.145.128.0/19'
kt4='85.113.0.0/19'
kt5='89.237.192.0/18'
mega1='77.235.0.0/19'
mega2='92.245.96.0/19'
nur1='194.152.36.0/24'
nur2='194.152.37.0/24'
energo1='91.205.48.0/22'
energo2='95.215.244.0/22'
saima='217.29.16.0/20'
totel='85.115.192.0/19'
transfer='81.88.192.0/20'
#------------------------------------------------------------------------------
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_conntrack_irc
# Конфигурация ядра
# Включаем IP forwarding.
#------------------------------------------------------------------------------
echo 1 > /proc/sys/net/ipv4/ip_forward
# Включить защиту IP спуфинга
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $i; done
# зашита от SYN flood атак
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# Игнорировать все входящие ICMP echo запросы
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Игнорировать ICMP echo запросы на broadcast
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Регистрировать пакеты с невозможными адресами.
for i in /proc/sys/net/ipv4/conf/*/log_martians; do echo 1 > $i; done
# Не логгировать invalid ответ на broadcast
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Не принимать или отправлять ICMP редиректы.
for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $i; done
for i in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 > $i; done
# Не принимать source routed пакеты.
for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $i; done
# Disable multicast routing
#for i in /proc/sys/net/ipv4/conf/*/mc_forwarding; do echo 0 > $i; done
# отключить proxy_arp.
for i in /proc/sys/net/ipv4/conf/*/proxy_arp; do echo 1 > $i; done
# Включить Секурные Редиректы, то есть только принимаем ICMP редиректы на шлюзы
for i in /proc/sys/net/ipv4/conf/*/secure_redirects; do echo 1 > $i; done
# Отключить bootp_relay
for i in /proc/sys/net/ipv4/conf/*/bootp_relay; do echo 0 > $i; done
# Правила по умолчанию.
#------------------------------------------------------------------------------
# Дропать все
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
# Включаем nat/mangle/raw Цепочки принимать пакеты
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P INPUT ACCEPT
$IPT -t mangle -P FORWARD ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
$IPT -t mangle -P POSTROUTING ACCEPT
# Ебля (зачистка)
#------------------------------------------------------------------------------

# Ебнуть все найух
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

# Удаляем все
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# все обнуляем
$IPT -Z
$IPT -t nat -Z
$IPT -t mangle -Z

# Отключаем IPv6.
#------------------------------------------------------------------------------

# Блочить весь IPv6 Траффик
# если ip6tables Доступна то пытаемся отключить
if test -x $IP6TABLES; then
# По дефолту
# Дропать все
$IP6TABLES -P INPUT DROP 2>/dev/null
$IP6TABLES -P FORWARD DROP 2>/dev/null
$IP6TABLES -P OUTPUT DROP 2>/dev/null

# Таблица mangle может пропустить все
$IP6TABLES -t mangle -P PREROUTING ACCEPT 2>/dev/null
$IP6TABLES -t mangle -P INPUT ACCEPT 2>/dev/null
$IP6TABLES -t mangle -P FORWARD ACCEPT 2>/dev/null
$IP6TABLES -t mangle -P OUTPUT ACCEPT 2>/dev/null
$IP6TABLES -t mangle -P POSTROUTING ACCEPT 2>/dev/null

# Удалить все правила.
$IP6TABLES -F 2>/dev/null
$IP6TABLES -t mangle -F 2>/dev/null

# все цепочки.
$IP6TABLES -X 2>/dev/null
$IP6TABLES -t mangle -X 2>/dev/null

# все обнулить
$IP6TABLES -Z 2>/dev/null
$IP6TABLES -t mangle -Z 2>/dev/null
fi

# А вот тут вот и начинаецца сама ебля с iptables....
#------------------------------------------------------------------------------

# Логгируем и потом принимаем пакеты.
$IPT -N ACCEPTLOG
$IPT -A ACCEPTLOG -j $LOG $RLIMIT --log-prefix "ACCEPT "
$IPT -A ACCEPTLOG -j ACCEPT

# Логгируем и шлем найух.
$IPT -N DROPLOG
$IPT -A DROPLOG -j $LOG $RLIMIT --log-prefix "DROP "
$IPT -A DROPLOG -j DROP

# Логгируем и режектим.
$IPT -N REJECTLOG
$IPT -A REJECTLOG -j $LOG $RLIMIT --log-prefix "REJECT "
$IPT -A REJECTLOG -p tcp -j REJECT --reject-with tcp-reset
$IPT -A REJECTLOG -j REJECT

# Только разрешаем RELATED ICMP типы
$IPT -N RELATED_ICMP
$IPT -A RELATED_ICMP -p icmp --icmp-type any -j ACCEPT
$IPT -A RELATED_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A RELATED_ICMP -p icmp --icmp-type parameter-problem -j ACCEPT
$IPT -A RELATED_ICMP -j DROPLOG

# против мульти пинга
$IPT  -A INPUT -p icmp -m limit --limit 1/s --limit-burst 2 -j ACCEPT
$IPT  -A INPUT -p icmp -m limit --limit 1/s --limit-burst 2 -j LOG --log-prefix PING-DROP:
$IPT  -A INPUT -p icmp -j DROP
$IPT  -A OUTPUT -p icmp -j ACCEPT

# Разрешить только минимально необходимые / рекомендованные части ICMP. Остальное в пезду
# Дропаем все фрагментированные ICMP пакеты ( почти всегда злоебучие)
#$IPT -A INPUT -p icmp --fragment -j DROPLOG
#$IPT -A OUTPUT -p icmp --fragment -j DROPLOG
#$IPT -A FORWARD -p icmp --fragment -j DROPLOG
# Разрешаем ESTABLISHED ICMP траффик.
$IPT -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT $RLIMIT
$IPT -A OUTPUT -p icmp -m state --state ESTABLISHED -j ACCEPT $RLIMIT
# Разрешить не весь RELATED ICMP траффик, остальное блочим
$IPT -A INPUT -p icmp -m state --state RELATED -j RELATED_ICMP $RLIMIT
$IPT -A OUTPUT -p icmp -m state --state RELATED -j RELATED_ICMP $RLIMIT
# Разрешить входящие эхо ICMP запросы (пинг), только с ограничением по конекту
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $RLIMIT

# ЗА ПИНГЕ ОТВЕЧАЕМ ХУЛЕ!1 %)
$IPT -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT $RLIMIT

# То что не проходит по правилам Шлем в пезду (или найух, кого куда).
$IPT -A INPUT -p icmp -j DROPLOG
$IPT -A OUTPUT -p icmp -j DROPLOG
$IPT -A FORWARD -p icmp -j DROPLOG
#------------------------------------------------------------------------------
# Не ограничиваем lo
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# Пропускаем ESTABLISHED и RELATED пакеты (не знаешь чо это то пиздуй кури маны %))
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# отвечаем, кроме invalid
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# ХУЕТА
#------------------------------------------------------------------------------

# Нам ПОХУЙ на Мелкософт, так что шлем его нахуй... No Windows, no Gates :P
$IPT -A INPUT -p tcp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP
$IPT -A INPUT -p udp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP

# Дропаем хуйпонятный Входящий траффик (INVALID)
$IPT -A INPUT -m state --state INVALID -j DROP

# Таже фигня с исходящим
$IPT -A OUTPUT -m state --state INVALID -j DROP

# Если мы будем использовать NAT, INVALID пакеты посылаем на...
$IPT -A FORWARD -m state --state INVALID -j DROP

# АА фиг просканишь порты эжжэ ээээ %)
$IPT -A INPUT -m state --state NEW -p tcp --tcp-flags ALL ALL -j DROP
$IPT -A INPUT -m state --state NEW -p tcp --tcp-flags ALL NONE -j DROP
$IPT -A PREROUTING -i $INDEV -t mangle -p tcp --syn \
  -j MARK --set-mark 1
# а вот тут вот нам будет похуй на школьнегоф %)
$IPT -N SYN_FLOOD
$IPT -A INPUT -p tcp --syn -j SYN_FLOOD
$IPT -A SYN_FLOOD -m limit --limit 2/s --limit-burst 6 -j RETURN
$IPT -A SYN_FLOOD -j DROP
$IPT -A SYN_FLOOD -j REJECT
# есле мудак какой то накосячил то ебем его вот тут..
# $IPT -A INPUT -s АЙПИ_МУДАКА -j DROPLOG

# разрешаем исходящий трафф
$IPT -A OUTPUT -j ACCEPT
# Входяшие DNS запросы
$IPT -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
# а вот тут вот уже правила на то что разрешено %)
$IPT -A INPUT -p tcp -m tcp -s $mega1 --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $mega2 --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $elcat1 --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $elcat2 --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $elcat3 --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $city --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $aknet --dport 21 -j ACCEPT
#ssh но не всем...
$IPT -A INPUT -p tcp -m tcp -s $aknet --dport 22 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp -s 92.245.108.200 --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $mega1 --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $mega2 --dport 22 -j ACCEPT
# открываем HTTP трафф на КГ зону
$IPT -A INPUT -p tcp -m tcp -s $mega1 --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $mega2 --dport 80 -j ACCEPT
#iptables -t nat -A POSTROUTING -j MASQUERADE
#$IPT -A INPUT -i eth0 -j ACCEPT
#$IPT -A OUTPUT -o eth0 -j ACCEPT
#NAT to vboxnet0
$IPT -t nat -A POSTROUTING -s 192.168.56.3 -o ppp0 -j SNAT --to-source 77.235.12.36

# Ну и то что мы тут забыли то логируем и отправляем далеко %)
#------------------------------------------------------------------------------
$IPT -A INPUT -j REJECTLOG
$IPT -A OUTPUT -j REJECTLOG
$IPT -A FORWARD -j REJECTLOG
#    exit 0

при таком раскладе инета нету на виртуальной машине

Код:
iptables -I FORWARD -i vboxnet0 -o ppp0 -j ACCEPT
iptables -I FORWARD -i ppp0 -o vboxnet0 -j ACCEPT

после этих строк, инет есть, но http не грузиться. under links когда захажу на gentoo.mega.kg/gentoo оно пишет что REQUEST SEND но не получает.
ЗЫ syslog молчит. ничего не дропает и режектит


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: NAT via iptables to VirtualMachine
СообщениеДобавлено: 17 апр 2010, 10:59 
Бородатый сис
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 2902
Откуда: Из серверной
Зарегистрирован: 03 мар 2010, 15:12
Благодарил (а): 19 раз.
Поблагодарили: 122 раз.
ОС: RHEL 6.7
Gen1us2k писал(а):
$IPT -A OUTPUT -j ACCEPT

А интерморды не нужно ли указать?


Я не злопамятный, я просто часто ковыряю логи
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: NAT via iptables to VirtualMachine
СообщениеДобавлено: 17 апр 2010, 11:00 
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 1887

Зарегистрирован: 03 мар 2010, 11:25
Благодарил (а): 4 раз.
Поблагодарили: 39 раз.
ОС: Slackware-current
ахренеть... это откуда такой дикий конф на иптраблах???
а вот над задачкой поразмышляем-с...


Изображение

Изображение

Work: Slackware Linux 14.0 х 'all Servers'
Laptop: Slackware64-current / Xfce 4.10 / Linux 3.10.5


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: NAT via iptables to VirtualMachine
СообщениеДобавлено: 17 апр 2010, 11:02 
Бородатый сис
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 2902
Откуда: Из серверной
Зарегистрирован: 03 мар 2010, 15:12
Благодарил (а): 19 раз.
Поблагодарили: 122 раз.
ОС: RHEL 6.7
А где маскарад?


Я не злопамятный, я просто часто ковыряю логи
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: NAT via iptables to VirtualMachine
СообщениеДобавлено: 17 апр 2010, 11:09 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
Raven
я SNAT'ом.. Натю, также я исходящий трафф разрешил
Infernal Flame
в смысле дикий?%)

ЗЫ комменты лучше не читать, забыл отредактировать %)


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: NAT via iptables to VirtualMachine
СообщениеДобавлено: 17 апр 2010, 11:11 
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 1887

Зарегистрирован: 03 мар 2010, 11:25
Благодарил (а): 4 раз.
Поблагодарили: 39 раз.
ОС: Slackware-current
Gen1us2k
да так... сурово выглядит просто....

Gen1us2k писал(а):
я SNAT'ом.. Натю, также я исходящий трафф разрешил

имхо, стоит попробовать маскарад....


Изображение

Изображение

Work: Slackware Linux 14.0 х 'all Servers'
Laptop: Slackware64-current / Xfce 4.10 / Linux 3.10.5


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: NAT via iptables to VirtualMachine
СообщениеДобавлено: 17 апр 2010, 11:17 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
Infernal Flame
ок, щас попробую маскарад
UPD: через маскарад такая же ситуация


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: NAT via iptables to VirtualMachine
СообщениеДобавлено: 18 апр 2010, 21:43 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
Код:
iptables -t mangle -A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

Решение проблемы. При конфигурации ppp0 интерфейса, должно корректироваться значение MTU чего у меня не было. добавил правило, все заработало! %)
Отдельное спасибо Лелику за решение проблемы:)


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
   Похожие темы   Автор   Ответов   Просмотров   Последнее сообщение 
Перенесенная ^_^

в форуме Linux

root

3

38

02 мар 2010, 16:15

Gen1us2k Перейти к последнему сообщению

Нет новых непрочитанных сообщений в этой теме Опубликован пакетный менеджер GNU Guix 0.12 и дистрибутив...

в форуме Новости *nix

[Ботя]

0

340

23 дек 2016, 13:30

Гость Перейти к последнему сообщению

Нет новых непрочитанных сообщений в этой теме Релиз http-сервера Apache 2.4.25

в форуме Новости *nix

[Ботя]

0

443

24 дек 2016, 14:30

Гость Перейти к последнему сообщению



Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Собрано Raven. Русская поддержка phpBB
phpBB SEO