This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
настройка_стендов_слушателей [2016/09/30 08:26] val [Настройка виртуальных систем Unix] |
настройка_стендов_слушателей [2020/08/22 15:00] (current) val [Общие файлы конфигурации] |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Настройка виртуальных систем Unix ===== | ===== Настройка виртуальных систем Unix ===== | ||
- | * Адаптер 1 - eth0/em0 - Внутренняя сеть или Виртуальный адаптер хоста (уточните у преподавателя) | + | * Адаптер 1 - eth0/em0 - "Внутренняя сеть" или "Виртуальный адаптер хоста" (уточните у преподавателя) |
* Адаптер 2 - eth1/em1 - Сетевой мост | * Адаптер 2 - eth1/em1 - Сетевой мост | ||
==== Общие файлы конфигурации ==== | ==== Общие файлы конфигурации ==== | ||
- | === FreeBSD/Ubuntu === | + | === Debian/Ubuntu === |
<code> | <code> | ||
Line 29: | Line 29: | ||
</code> | </code> | ||
- | ==== Ubuntu ==== | + | ==== Debian/Ubuntu ==== |
+ | |||
+ | * [[Настройка сети в Linux]] | ||
=== Gate === | === Gate === | ||
<code> | <code> | ||
- | root@localhost:~# ip link set enp0s3 up | ||
- | |||
- | root@localhost:~# ip addr add 192.168.X.1/24 dev enp0s3 | ||
- | |||
- | root@localhost:~# dmesg | grep eth | ||
- | |||
- | root@localhost:~# cat /etc/udev/rules.d/70-my-net-names.rules | ||
- | </code><code> | ||
- | SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="08:00:27:nn:nn:nn", NAME="eth0" | ||
- | SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="08:00:27:nn:nn:nn", NAME="eth1" | ||
- | </code><code> | ||
root@localhost:~# cat /etc/hostname | root@localhost:~# cat /etc/hostname | ||
</code><code> | </code><code> | ||
Line 80: | Line 71: | ||
=== Server === | === Server === | ||
<code> | <code> | ||
- | root@localhost:~# ip link set enp0s3 up | ||
- | |||
- | root@localhost:~# ip addr add 192.168.X.10/24 dev enp0s3 | ||
- | |||
- | root@localhost:~# dmesg | grep eth | ||
- | |||
- | root@localhost:~# cat /etc/udev/rules.d/70-my-net-names.rules | ||
- | </code><code> | ||
- | SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="08:00:27:nn:nn:nn", NAME="eth0" | ||
- | </code><code> | ||
root@localhost:~# cat /etc/hostname | root@localhost:~# cat /etc/hostname | ||
</code><code> | </code><code> | ||
Line 152: | Line 133: | ||
</code> | </code> | ||
- | ===== Дополнительные материалы ===== | + | ===== Скрипты автоконфигурации ===== |
<code> | <code> | ||
- | cat gate.sh | + | # git clone http://val.bmstu.ru/unix/conf.git |
+ | </code> | ||
+ | ==== gate.corpX.un ==== | ||
+ | <code> | ||
+ | # cat net_gate.sh | ||
</code><code> | </code><code> | ||
- | rm /etc/udev/rules.d/70-persistent-net.rules | + | X=$1 |
+ | |||
+ | if test -z $X | ||
+ | then | ||
+ | echo -n "enter X: " | ||
+ | read X | ||
+ | fi | ||
cat > /etc/hosts <<EOF | cat > /etc/hosts <<EOF | ||
127.0.0.1 localhost | 127.0.0.1 localhost | ||
- | 192.168.${1}.1 gate.corp${1}.un gate | + | 192.168.$X.1 gate.corp$X.un gate |
172.16.1.254 proxy | 172.16.1.254 proxy | ||
Line 168: | Line 160: | ||
cat > /etc/resolv.conf <<EOF | cat > /etc/resolv.conf <<EOF | ||
- | search corp${1}.un | + | search corp$X.un |
nameserver 172.16.1.254 | nameserver 172.16.1.254 | ||
+ | #nameserver 192.168.$X.10 | ||
EOF | EOF | ||
- | echo gate.corp${1}.un > /etc/hostname | + | echo gate.corp$X.un > /etc/hostname |
cat > /etc/network/interfaces <<EOF | cat > /etc/network/interfaces <<EOF | ||
Line 180: | Line 173: | ||
auto eth0 | auto eth0 | ||
iface eth0 inet static | iface eth0 inet static | ||
- | address 192.168.${1}.1 | + | address 192.168.$X.1 |
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
auto eth1 | auto eth1 | ||
iface eth1 inet static | iface eth1 inet static | ||
- | address 172.16.1.${1} | + | address 172.16.1.$X |
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
gateway 172.16.1.254 | gateway 172.16.1.254 | ||
+ | |||
+ | #auto eth2 | ||
+ | #iface eth2 inet static | ||
+ | # address 192.168.$((100+$X)).1 | ||
+ | # netmask 255.255.255.0 | ||
EOF | EOF | ||
- | echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf | + | echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf |
+ | |||
+ | timedatectl set-timezone Europe/Moscow | ||
+ | |||
+ | echo Success | ||
+ | exit 0 | ||
+ | </code> | ||
+ | |||
+ | ==== server.corpX.un ==== | ||
+ | |||
+ | <code> | ||
+ | # cat net_server.sh | ||
</code><code> | </code><code> | ||
- | cat server.sh | + | X=$1 |
- | </code><code> | + | |
- | rm /etc/udev/rules.d/70-persistent-net.rules | + | if test -z $X |
+ | then | ||
+ | echo -n "enter X: " | ||
+ | read X | ||
+ | fi | ||
cat > /etc/hosts <<EOF | cat > /etc/hosts <<EOF | ||
127.0.0.1 localhost | 127.0.0.1 localhost | ||
- | 192.168.${1}.10 server.corp${1}.un server | + | 192.168.$X.10 server.corp$X.un server |
172.16.1.254 proxy | 172.16.1.254 proxy | ||
Line 206: | Line 219: | ||
cat > /etc/resolv.conf <<EOF | cat > /etc/resolv.conf <<EOF | ||
- | search corp${1}.un | + | search corp$X.un |
nameserver 172.16.1.254 | nameserver 172.16.1.254 | ||
+ | #nameserver 192.168.$X.10 | ||
EOF | EOF | ||
- | echo server.corp${1}.un > /etc/hostname | + | echo server.corp$X.un > /etc/hostname |
cat > /etc/network/interfaces <<EOF | cat > /etc/network/interfaces <<EOF | ||
Line 218: | Line 232: | ||
auto eth0 | auto eth0 | ||
iface eth0 inet static | iface eth0 inet static | ||
- | address 192.168.${1}.10 | + | address 192.168.$X.10 |
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
- | gateway 192.168.${1}.1 | + | gateway 192.168.$X.1 |
EOF | EOF | ||
+ | |||
+ | timedatectl set-timezone Europe/Moscow | ||
+ | |||
+ | echo Success | ||
+ | exit 0 | ||
+ | </code> | ||
+ | |||
+ | ==== dhcp ==== | ||
+ | |||
+ | <code> | ||
+ | # cat dhcp.sh | ||
+ | </code><code> | ||
+ | X=$1 | ||
+ | |||
+ | if test -z $X | ||
+ | then | ||
+ | echo -n "enter X: " | ||
+ | read X | ||
+ | fi | ||
+ | |||
+ | apt update | ||
+ | apt install -y isc-dhcp-server | ||
+ | |||
+ | echo 'INTERFACES="eth0"' > /etc/default/isc-dhcp-server | ||
+ | echo '#INTERFACES="eth0 eth2"' >> /etc/default/isc-dhcp-server | ||
+ | |||
+ | cat > /etc/dhcp/dhcpd.conf <<EOF | ||
+ | ddns-update-style none; | ||
+ | |||
+ | default-lease-time 600; | ||
+ | max-lease-time 7200; | ||
+ | |||
+ | option domain-name "corp$X.un"; | ||
+ | option domain-name-servers 192.168.$X.10; | ||
+ | |||
+ | #### For provisioning #### | ||
+ | #option tftp-server-name code 66 = string; # RFC 2132 | ||
+ | #option tftp-server-address code 150 = ip-address; # RFC 5859 | ||
+ | #option tftp-server-name "server.corp$X.un"; | ||
+ | #option tftp-server-address 192.168.$X.10; | ||
+ | |||
+ | |||
+ | shared-network LAN1 { | ||
+ | subnet 192.168.$X.0 netmask 255.255.255.0 { | ||
+ | range 192.168.$X.101 192.168.$X.199; | ||
+ | option routers 192.168.$X.1; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | #shared-network LAN2 { | ||
+ | # subnet 192.168.$((100 + $X)).0 netmask 255.255.255.0 { | ||
+ | # range 192.168.$((100 + $X)).101 192.168.$((100 + $X)).199; | ||
+ | # option routers 192.168.$((100 + $X)).1; | ||
+ | # } | ||
+ | #} | ||
+ | |||
+ | |||
+ | EOF | ||
+ | |||
+ | dhcpd -t && service isc-dhcp-server start | ||
+ | |||
+ | echo Success | ||
+ | exit 0 | ||
+ | </code> | ||
+ | |||
+ | ==== dns ==== | ||
+ | |||
+ | <code> | ||
+ | # cat dns.sh | ||
+ | </code><code> | ||
+ | X=$1 | ||
+ | |||
+ | if test -z $X | ||
+ | then | ||
+ | echo -n "enter X: " | ||
+ | read X | ||
+ | fi | ||
+ | |||
+ | apt update | ||
+ | apt install -y bind9 dnsutils | ||
+ | |||
+ | cat > /etc/bind/named.conf <<EOF | ||
+ | options { | ||
+ | directory "/var/cache/bind"; | ||
+ | |||
+ | allow-recursion { any; }; | ||
+ | |||
+ | forwarders { | ||
+ | 172.16.1.254; | ||
+ | }; | ||
+ | empty-zones-enable no; | ||
+ | }; | ||
+ | |||
+ | view "inside" { | ||
+ | match-clients { | ||
+ | // 192.168.$X/24; | ||
+ | // 127/8; | ||
+ | 0/0; | ||
+ | }; | ||
+ | zone "corp$X.un" { | ||
+ | type master; | ||
+ | file "/etc/bind/corp$X.un"; | ||
+ | }; | ||
+ | }; | ||
+ | |||
+ | view "outside" { | ||
+ | zone "corp$X.un" { | ||
+ | type master; | ||
+ | file "/etc/bind/corp$X.un.out"; | ||
+ | }; | ||
+ | }; | ||
+ | EOF | ||
+ | |||
+ | cat > /etc/bind/corp$X.un <<EOF | ||
+ | \$TTL 3h | ||
+ | @ SOA ns root.ns 1 1d 12h 1w 3h | ||
+ | NS ns | ||
+ | |||
+ | A 192.168.$X.10 | ||
+ | MX 1 server | ||
+ | |||
+ | ns A 192.168.$X.10 | ||
+ | gate A 192.168.$X.1 | ||
+ | server A 192.168.$X.10 | ||
+ | |||
+ | ;_sip._udp SRV 0 0 5060 server | ||
+ | |||
+ | ;_xmpp-client._tcp SRV 0 0 5222 server | ||
+ | |||
+ | ;_kerberos._udp SRV 01 00 88 server | ||
+ | ;_kerberos._tcp SRV 01 00 88 server | ||
+ | ;_kerberos TXT CORP$X.UN | ||
+ | EOF | ||
+ | |||
+ | cat > /etc/bind/corp$X.un.out <<EOF | ||
+ | \$TTL 3h | ||
+ | @ SOA ns root.ns 1 1d 12h 1w 3h | ||
+ | NS ns | ||
+ | |||
+ | ns A 172.16.1.$X | ||
+ | gate A 172.16.1.$X | ||
+ | server A 172.16.1.$X | ||
+ | |||
+ | ;_sip._udp SRV 00 00 6050 server | ||
+ | EOF | ||
+ | |||
+ | named-checkconf -z && service bind9 restart | ||
+ | |||
+ | echo Success | ||
+ | exit 0 | ||
+ | </code> | ||
+ | |||
+ | ===== Ansible конфигурация ===== | ||
+ | |||
+ | <code> | ||
+ | # git clone http://val.bmstu.ru/unix/conf.git | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | server.isp.un:~/ansible/roles# cat host.yml | ||
+ | </code><code> | ||
+ | - name: Network config for hosts | ||
+ | hosts: corp | ||
+ | strategy: free | ||
+ | roles: | ||
+ | - host | ||
+ | </code><code> | ||
+ | server.isp.un:~/ansible/roles# cat host/tasks/main.yml | ||
+ | </code><code> | ||
+ | - name: Create hosts file | ||
+ | template: src=hosts.j2 dest=/etc/hosts | ||
+ | |||
+ | - name: Create resolv.conf file | ||
+ | template: src=resolv.conf.j2 dest=/etc/resolv.conf | ||
+ | |||
+ | - name: Create hostname file | ||
+ | template: src=hostname.j2 dest=/etc/hostname | ||
+ | |||
+ | - name: Create interfaces file | ||
+ | template: src=interfaces.j2 dest=/etc/network/interfaces | ||
+ | |||
+ | #- name: Restart system | ||
+ | # command: shutdown -r +1 | ||
+ | </code><code> | ||
+ | server.isp.un:~/ansible/roles# cat host/vars/main.yml | ||
+ | </code><code> | ||
+ | hostname: server | ||
+ | #hostname: mail | ||
+ | base_domain_prefix: corp | ||
+ | base_domain_suffix: un | ||
+ | base_net: 172.16.1 | ||
+ | gateway_octet: 254 | ||
+ | dns_ip: 172.16.1.254 | ||
+ | X: "{{ ansible_eth0.ipv4.address.split('.')[3] }}" | ||
+ | #X: "{{ ansible_eth0.ipv4.address.split('.')[3] | int - 100 }}" | ||
+ | </code><code> | ||
+ | server.isp.un:~/ansible/roles# cat host/templates/hosts.j2 | ||
+ | </code><code> | ||
+ | 127.0.0.1 localhost | ||
+ | |||
+ | {{ ansible_eth0.ipv4.address }} {{ hostname }}.{{ base_domain_prefix }}{{ X }}.{{ base_domain_suffix }} {{ hostname }} | ||
+ | |||
+ | {{ base_net }}.254 rep | ||
+ | </code><code> | ||
+ | server.isp.un:~/ansible/roles# cat host/templates/resolv.conf.j2 | ||
+ | </code><code> | ||
+ | search {{ base_domain_prefix }}{{ X }}.{{ base_domain_suffix }} | ||
+ | nameserver {{ dns_ip }} | ||
+ | </code><code> | ||
+ | server.isp.un:~/ansible/roles# cat host/templates/hostname.j2 | ||
+ | </code><code> | ||
+ | {{ hostname }}.{{ base_domain_prefix }}{{ X }}.{{ base_domain_suffix }} | ||
+ | </code><code> | ||
+ | server.isp.un:~/ansible/roles# cat host/templates/interfaces.j2 | ||
+ | </code><code> | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address {{ ansible_eth0.ipv4.address }} | ||
+ | netmask 255.255.255.0 | ||
+ | gateway {{ base_net }}.{{ gateway_octet }} | ||
+ | </code><code> | ||
+ | root@server:~/ansible/roles# ansible-playbook host.yml | ||
+ | |||
+ | или | ||
+ | |||
+ | root@server:~# ansible-playbook ansible/roles/host.yml | ||
</code> | </code> |