Сеть (IP, firewall)

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (2)

просмотр истории страницы
{toc}

h1. Ethernet, Bridge, Bonding, Vlan

Всё работает максимально стандартно, как заведено в CentOS 6.

Настройки лежат в:
{code}
/etc/sysconfig/network-scripts/
{code}

Возможно какие-либо приложения (например Carbon Reductor) предоставляют дополнительно мастера настройки сети, требующие особенных ухищрений, необходимых для корректной работы, но в целом - это максимально стандартные настройки сети, [все параметры отлично гуглятся|https://duckduckgo.com/?q=centos+6+%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0+%D1%81%D0%B5%D1%82%D0%B8&t=ffab&ia=web].

h1. Dummy

Теперь про не совсем стандартные части. Каждое приложение не особо зависит от настроек сети в базовой системе. Свои IP адреса они вешают на виртуальный интерфейс dummy0, реальный трафик попадает на эти IP адреса с помощью iptables (DNAT).

{code}
# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 10.50.140.247/16 brd 10.50.255.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 10.30.45.1/24 brd 10.30.45.255 scope global eth1
4: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
inet 169.254.80.81/16 scope global dummy0
inet 169.254.80.80/16 scope global secondary dummy0
inet 169.254.80.43/16 scope global secondary dummy0
inet 169.254.80.83/16 scope global secondary dummy0
inet 169.254.80.85/16 scope global secondary dummy0
{code}

h1. Firewall

Правила iptables тоже имеют некоторые особенности. Каждый контейнер создаёт свою подцепочку с правилами, например:

{code}
# iptables -nvL FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
11M 740M reductor_forward all -- * * 0.0.0.0/0 0.0.0.0/0
146 8418 auth_forward all -- * * 0.0.0.0/0 0.0.0.0/0
228 13084 base_forward all -- * * 0.0.0.0/0 0.0.0.0/0
{code}

Внутри которых так же могут быть ещё подцепочки:

{code}
# iptables -nvL reductor_forward
Chain reductor_forward (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 0.0.0.0/0 95.213.143.204
575 34500 reductor_ip_block all -- * * 0.0.0.0/0 0.0.0.0/0 match-set ip_block dst,dst
0 0 reductor_https_dst tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set port_https dst
0 0 reductor_https_src tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set port_https src
4476K 299M reductor_http tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set port_http dst
3716K 231M reductor_dns udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
7759K 485M reductor_other_traffic all -- * * 0.0.0.0/0 0.0.0.0/0
5237K 285M ACCEPT all -- * * 10.30.45.2 0.0.0.0/0
2522K 200M ACCEPT all -- * * 0.0.0.0/0 10.30.45.2
{code}

h1. Вопрос/ответ

h2. Почему у меня веб-интерфейс слушает на 169.254.80.80, как я туда вообще попаду?

Вы попадёте туда через DNAT, при обращении на любой доступный вам IP адрес-сервера (например по которому вы подключаетесь по SSH):

{code}
[root@carbon ~]# iptables -t nat -nvL | grep DNAT
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 ADDRTYPE match dst-type LOCAL to:169.254.80.80:8080
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8043 ADDRTYPE match dst-type LOCAL to:169.254.80.43:8043
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set base_auth_users src tcp dpt:8081 ADDRTYPE match dst-type LOCAL to:169.254.80.81:8081
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ADDRTYPE match dst-type LOCAL to:169.254.0.80:80
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 ADDRTYPE match dst-type LOCAL to:169.254.4.43:443
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set base_auth_users tcp dpt:8083 ADDRTYPE match dst-type LOCAL to:169.254.80.83:8083
{code}

Если вас беспокоит то, что веб-интерфейс сервера может быть доступен абонентам - можете дополнительно ограничить доступ к нему по IP адресам в настройках базовой системы (пункт IP адреса/сети администратора/операторов).