با خیال راحت ظروف LXC را در Ubuntu 14.04 مستقر و مدیریت کنید

ظروف LXC (ظروف لینوکس) یک ویژگی سیستم عامل در لینوکس است که می تواند برای اجرای چندین سیستم جدا شده لینوکس روی یک هاست واحد مورد استفاده قرار گیرد.

این دستورالعمل ها شما را در مراحل اساسی پیکربندی سرور برای میزبانی کانتینر جداول لینوکس طی می کنند. ما ویژگی های زیر را پیکربندی می کنیم:

  • ظروف LXC با اوبونتو 14.
  • تنظیمات شبکه لینوکس و ارسال پورت برای ظروف.
  • حمل و نقل SSH برای مدیریت ظروف به همان سادگی ssh [email protected]وssh [email protected]
  • پیکربندی پروکسی Nginx برای دسترسی به وب سایت های داخل ظروف (توسط نام میزبان).
  • پیشرفت های امنیتی اضافی برای مدیریت صحیح سرور.

این راهنما فرض می کند که:

  • شما در Vultr.com یک حساب کاربری دارید .
  • شما می دانید که چگونه یک ماشین مجازی را با ISO سفارشی پیکربندی کنید.
  • شما می دانید که چگونه از کلیدهای SSH استفاده کنید و قبلاً کلیدهای عمومی و خصوصی ایجاد کرده اید.

در پایان آموزش دو کانتینر مجازی خواهیم داشت که به اینترنت دسترسی خواهند داشت اما نمی توانند یکدیگر را پینگ کنند. همچنین حمل و نقل پورت را example.comبه ظروف پیکربندی خواهیم کرد. ما با کمک ابزارهایی از بسته Proxmox ، پیکربندی و کنترل پنل ایمن را مستقر خواهیم کرد.

مقدمات

ما فقط برای مدیریت ظروف LXC از Proxmox استفاده خواهیم کرد. معمولاً از KVM پشتیبانی می کند ، اما مجازی سازی تو در تو Vultr ممنوع است. قبل از شروع ، یک ISO Proxmox باید از وب سایت رسمی بارگیری شود. ما استفاده Proxmox VE 5.0 ISO Installerخواهیم کرد با تنظیمات پیش فرض سیستم عامل را از روی تصویر نصب کرده و دستگاه مجازی را دوباره راه اندازی کنید. همچنین ، می توانید Proxmox را به صورت دستی از منابع نصب کنید ، اما در اکثر موارد این کار ضروری نیست (دستورالعمل های اینجا را دنبال کنید ).

راه اندازی سیستم عامل

با SSH به میزبان خود متصل شوید ، لیست الگوهای proxmox را به روز کنید و یک الگوی مناسب برای ظروف بارگیری کنید.

apt-get update
pveam update
pveam available
pveam download local ubuntu-14.04-standard_14.04-1_amd64.tar.gz

حال باید یک کانتینر لینوکس با رابط شبکه ایجاد کنیم که به یک پل لینوکس متصل است. /etc/network/interfacesخطوط زیر را باز کرده و ضمیمه کنید:

auto vmbr1
iface vmbr1 inet static
    address  10.100.0.1
    netmask  255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0

پس از راه اندازی مجدد سیستم ، می توانید یک ظرف جدید از Ubuntu 14.04قالب ایجاد کنید.

pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.200/24,gw=10.100.0.1

می توانید ظرف خود را با استفاده از ظرف تأیید کنید pct list، ظرف شماره 200 را با pct start 200آن شروع کنید و پوسته آن را وارد کنید pct enter 200. همچنین می توانید تنظیمات و آدرس های شبکه را با آنها تأیید کنید ip addr.

شبکه

برای برقراری ارتباط اینترنتی در داخل کانتینر ، باید آن را فعال کنیم NAT. موارد زیر باعث می شود تا ترافیک از کانتینر به اینترنت با کمک فناوری NAT هدایت شود. این vmbr0پل به رابط خارجی وصل شده و این vmbr1پل به ظروف متصل است.

sysctl -w net.ipv4.ip_forward=1
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
iptables --append FORWARD --in-interface vmbr1 -j ACCEPT

ظرف را وارد کنید pct enter 200و سرور وب را درون آن پیکربندی کنید.

apt-get update
apt-get install nginx
service nginx start
exit

اکنون ، ما باید Nginx را بر روی سرور خود پیکربندی کنیم تا وب سایت های پروکسی را در ظروف قرار دهیم.

apt-get update
apt-get install nginx

/etc/nginx/sites-available/box200با پیوند زیر یک پرونده پیکربندی جدید ایجاد کنید :

server {
    listen 80;
    server_name server200.example.com;

    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;

    location / {
        proxy_pass http://10.100.0.200/;
    }
}

Nginx اکنون درخواست server200.example.comIP HTTP را از طریق سرور خود به ظرف با IP 10.100.0.200 پروکسی می کند. این پیکربندی را فعال کنید.

ln -s /etc/nginx/sites-available/box200 /etc/nginx/sites-enabled/
service nginx restart

دسترسی به SSH

اگر می خواهید دسترسی آسان به ماسهبازی ها داشته باشید ، لازم است جلسات SSH را درون ظروف منتقل کنید. برای انجام این کار ، یک کاربر جدید در سرور root خود ایجاد کنید. فراموش کردن رمز عبور ، پارامترهای دیگر لازم نیست.

adduser box200
su - box200
ssh-keygen
cat .ssh/id_rsa.pub
exit

این کلید SSH را کپی کنید و برای اضافه کردن کلید وارد ظرف شوید.

pct enter 200
mkdir .ssh
nano .ssh/authorized_keys
exit

در سرور خود ، خط زیر را به .ssh/authorized_keysپرونده اضافه کنید.

command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>

فراموش نکنید که <YOUR SSH KEY>به کلید عمومی منزل خود تغییر دهید . همچنین می توانید موارد زیر را از خط فرمان اجرا کنید.

echo 'command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>' >> .ssh/authorized_keys

سپس می توانید با ssh به sandbox خود متصل شوید.

`ssh box200@<your_server_IP>`

تنظیمات اضافی

اکنون زمان اجرای چندین پیشرفت امنیتی است. ابتدا می خواهیم پورت پیش فرض SSH را تغییر دهیم. سپس می خواهیم از صفحه مدیریت Proxmox خود با احراز هویت اولیه HTTP محافظت کنیم.

nano /etc/ssh/sshd_config

رفع اشکال و تغییر خط

#Port 22 

به

Port 24000 

شروع مجدد ssh

service ssh restart

دوباره به ssh با درگاه جدید وصل شوید.

ssh root@<your_IP> -p 24000

رمزعبور Proxmox را تنظیم کنید.

ایجاد فایل /etc/default/pveproxy.

ALLOW_FROM="127.0.0.1"
DENY_FROM="all"
POLICY="allow"

pveproxyبرای اعمال تغییرات مجدداً راه اندازی کنید .

/etc/init.d/pveproxy restart

nginx را پیکربندی کنید (اگر قبلاً این کار را نکرده اید).

apt-get install nginx
service nginx restart

یک پیکربندی پیش فرض در ایجاد کنید /etc/nginx/site-available/default.

server {
        listen          80;
        server_name     example.com;
        rewrite         ^ https://$hostname.example.com$request_uri? permanent;
}
server {
        listen                   443 ssl;
        server_name              example.com;
        #auth_basic              "Restricted";
        #auth_basic_user_file    htpasswd;
        #location / { proxy_pass https://127.0.0.1:8006; }
}

یک گواهی SSL معتبر بدست آورید و پیکربندی nginx خود را به روز کنید. به عنوان مثال ، این کار را می توان با کمک گواهی نامه و letsencrypt انجام داد. برای اطلاعات بیشتر، کلیک کنید اینجا .

wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
./certbot-auto --nginx

اکنون ، پیکربندی nginx شما باید شبیه به این باشد (یا می توانید پس از آن به صورت دستی آن را تغییر دهید). فراموش نکنید که خطوط ssl ، auth و موقعیت مکانی را فراموش نکنید.

server {
    listen          80;
    server_name     example.com;
    rewrite         ^ https://$hostname.example.com$request_uri? permanent;
}

server {
        listen                  443 ssl;
        server_name             example.com;
        ssl on;
        auth_basic              "Restricted";
        auth_basic_user_file    htpasswd;
        location / { proxy_pass https://127.0.0.1:8006; }        

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
}

/etc/htpasswdبا استفاده از ژنراتور Htpasswd یک فایل ایجاد کنید .

nano /etc/nginx/htpasswd

Nginx را مجدداً راه اندازی کنید

service nginx restart

اکنون می توانید کنسول مدیریت را https://example.comبعد از تأیید اعتبار اولیه مشاهده کنید.

پورت حمل و نقل

اکنون ظروف توسط درخواست HTTP و SSH در دسترس هستند. اکنون می توانیم پیکربندی پورت را از سرور خارجی به ظروف پیکربندی کنیم. به عنوان مثال ، برای نقشه برداری example.com:8080برای 10.100.0.200:3000ورودی موارد زیر.

iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to 10.100.0.200:3000

شما می توانید قوانین فعلی را مشاهده کنید.

`iptables -t nat -v -L PREROUTING -n --line-number`

همچنین می توانید یک قانون را با شماره زیر حذف کنید.

`iptables -t nat -D PREROUTING <#>`.

ظروف جدا شده

اکنون می توانیم از ظرف دیگری به یک ظرف دیگر دسترسی پیدا کنیم.

pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.250/24,gw=10.100.0.1
pct start 250
pct enter 250
ping 10.100.0.200

اگر می خواهید دسترسی از ظرف 250 تا 200 را محدود کنید ، باید هر ظرف را به یک پل شخصی وصل کنید و حمل و نقل بین پل ها را غیرفعال کنید.

  1. ظروف موجود را حذف کنید.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. تغییر محتوای /etc/network/interfaces.

    auto vmbr1
    iface vmbr1 inet static
        address  10.100.1.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
    
    auto vmbr2
    iface vmbr2 inet static
        address  10.100.2.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
    
  3. reboot سیستم

  4. حمل و نقل را فعال کنید

    `sysctl -w net.ipv4.ip_forward=1`
    

    برای اینکه این تغییرات دائمی شود ، می توانید /etc/sysctl.confپرونده را ویرایش کرده و متن زیر را بیابید.

    #net.ipv4.ip_forward=1
    

    ناراضی بودن

    net.ipv4.ip_forward=1
    

    شما همچنین می توانید اجرا کنید sysctl -pتا تغییرات بلافاصله عملی شوند.

  5. ظروف ایجاد کنید.

    pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.1.200/24,gw=10.100.1.1
    pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr2,ip=10.100.2.250/24,gw=10.100.2.1
    
  6. ظروف را با pct start 200و شروع کنید pct start 250.

  7. iptablesقوانین را شستشو دهید .

    iptables -F
    
  8. NAT را فعال کنید.

    iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
    

    vmbr0 پلی است که شامل رابط خارجی است.

  9. اجازه انتقال از رابط خارجی.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. حمل و نقل از ظروف به اینترنت مجاز است.

    iptables -A FORWARD -i vmbr1 -o vmbr0 -s 10.100.1.0/24 -j ACCEPT
    iptables -A FORWARD -i vmbr2 -o vmbr0 -s 10.100.2.0/24 -j ACCEPT
    
  11. حمل و نقل دیگر را رها کنید.

    iptables -A FORWARD -i vmbr1 -j DROP
    iptables -A FORWARD -i vmbr2 -j DROP
    

اکنون بررسی کنید که 10.100.1.200می تواند پینگ کند 8.8.8.8اما نمی تواند پینگ کند 10.100.2.250و 10.100.2.250می تواند پینگ کند 8.8.8.8اما نمی تواند پینگ کند 10.100.1.200.

ترتیب دستورات مربوط به iptables مهم است. بهترین راه برای استفاده از قوانین خود استفاده از آن است iptables-persistent. این بسته به شما کمک می کند تا قوانین iptables را در پرونده ها ذخیره کنید /etc/iptables/rules.v4و /etc/iptables/rules.v6پس از راه اندازی مجدد سیستم می توانید آنها را به طور خودکار بارگیری کنید. فقط آن را با موارد زیر نصب کنید.

apt-get install iptables-persistent

YESوقتی از شما خواسته شد انتخاب کنید .



Leave a Comment

Kubernetes With Kubeadm را در CentOS 7 مستقر کنید

Kubernetes With Kubeadm را در CentOS 7 مستقر کنید

بررسی اجمالی این مقاله به شما کمک می کند تا در هر زمان خوشه ای از Kubernetes را جمع کنید و با kubeadm در حال اجرا باشید. در این راهنما از دو سرور استفاده می شود

Docker CE را در اوبونتو 18.04 نصب کنید

Docker CE را در اوبونتو 18.04 نصب کنید

مقدمه Docker برنامه ای است که به ما امکان می دهد برنامه هایی را که به صورت ظروف اجرا می شوند مستقر کنیم. این متن با زبان محبوب برنامه نویسی Go نوشته شده است

نصب Docker در CentOS 7

نصب Docker در CentOS 7

با استفاده از یک سیستم متفاوت؟ Docker برنامه ای است که امکان استقرار نرم افزار در ظروف مجازی را فراهم می آورد. در برنامه نویسی Go نوشته شده است

Rancher را در اوبونتو 16.04 نصب کنید

Rancher را در اوبونتو 16.04 نصب کنید

با استفاده از یک سیستم متفاوت؟ مقدمه Rancher یک بستر منبع باز برای اجرای ظروف و ساخت سرویس کانتینر خصوصی است. رانچر پایه است

با استفاده از Docker-compose یک برنامه PHP مستقر کنید

با استفاده از Docker-compose یک برنامه PHP مستقر کنید

برنامه های PHP معمولاً توسط یک سرور ، یک سیستم پایگاه داده رابطه و خود مفسر زبان تشکیل می شوند. در این آموزش leveragin خواهیم بود

نصب docker-compose در CoreOS

نصب docker-compose در CoreOS

در این مقاله نحوه نصب docker-compose در CoreOS توضیح داده شده است. در CoreOS ، پوشه / usr / تغییر ناپذیر است بنابراین مسیر استاندارد / usr / local / bin در دسترس نیست

در CoreOS ، رجیستری خود را تنظیم کنید

در CoreOS ، رجیستری خود را تنظیم کنید

همه ما Docker را می شناسیم و دوست داریم ، سکویی برای ایجاد ، مدیریت و توزیع ظروف برنامه در دستگاه های مختلف. شرکت Docker یک سرویس t ارائه می دهد

Rancher را روی CentOS 7 نصب کنید

Rancher را روی CentOS 7 نصب کنید

با استفاده از یک سیستم متفاوت؟ مقدمه Rancher یک بستر منبع باز برای اجرای ظروف و ساخت سرویس کانتینر خصوصی است. رانچر پایه است

Sentry Sentry را از طریق Docker در اوبونتو 16.04 تنظیم کنید

Sentry Sentry را از طریق Docker در اوبونتو 16.04 تنظیم کنید

با استفاده از یک سیستم متفاوت؟ مقدمه Sentry یک راه حل منبع باز برای ردیابی خطا است. Sentry استثنائات و سایر پیام های مفید را از این طریق دنبال می کند

ایجاد یک Darmer Swarm در Alpine Linux 3.9.0

ایجاد یک Darmer Swarm در Alpine Linux 3.9.0

مقدمه این راهنما نحوه ایجاد و پیکربندی ازدحام Docker را با استفاده از چندین سرور Alpine Linux 3.9.0 و Portainer به شما نشان می دهد. لطفا آگاه باشید

جلسه مهم با Docker Swarm (CE) در Debian 9

جلسه مهم با Docker Swarm (CE) در Debian 9

با استفاده از یک سیستم متفاوت؟ مقدمه Docker Swarm سرورهای شخصی شما را به گروهی از رایانه ها تبدیل می کند. تسهیل مقیاس پذیری ، در دسترس بودن بالا

جلسه Sticky With Docker Swarm (CE) در CentOS 7

جلسه Sticky With Docker Swarm (CE) در CentOS 7

با استفاده از یک سیستم متفاوت؟ مقدمه Docker Swarm سرورهای فردی شما را به مجموعه ای از رایانه ها تبدیل می کند و باعث می شود مقیاس پذیری و در دسترس بودن بالا را تسهیل کند

دو ابزار مدیریت گرافیکی Docker: DockerUI و Shipyard

دو ابزار مدیریت گرافیکی Docker: DockerUI و Shipyard

با کمک برنامه Vultr Docker ، به راحتی می توانید Docker را به عنوان نمونه سرور Vultr خود مستقر کنید. در ضمن ، می توانید وظیفه مدیریت داکر را تسهیل کنید

نحوه نصب Harbour در CentOS 7

نحوه نصب Harbour در CentOS 7

Harbour یک سرور رجیستری کلاس سازمانی منبع باز است که تصاویر Docker را ذخیره و توزیع می کند. بندرگاه منبع باز Docker Distribution b را گسترش می دهد

سرور Rancher را روی RancherOS نصب کنید

سرور Rancher را روی RancherOS نصب کنید

بررسی اجمالی RancherOS یک سیستم عامل فوق العاده سبک (فقط حدود 60 مگابایت) است که برای اجرای سرویس های سیستم ، یک Demoner سیستم Docker به عنوان PID 0 را اجرا می کند.

شروع کار با Kubernetes در CentOS 7

شروع کار با Kubernetes در CentOS 7

Kubernetes یک سیستم عامل منبع باز است که توسط Google برای مدیریت برنامه های کانتینر شده در سرتاسر گروههای سرور ساخته شده است. این بنا بر روی یک دهه ساخته می شود و

نحوه استفاده از داکر: ایجاد اولین کانتینر داکر

نحوه استفاده از داکر: ایجاد اولین کانتینر داکر

در این آموزش اصول اولیه کار با داکر توضیح داده شده است. فرض می کنم شما قبلاً داکر نصب کرده اید. مراحل این آموزش روی آن کار خواهد کرد

بار را با Docker بارگذاری کنید

بار را با Docker بارگذاری کنید

هنگام اجرای یک برنامه وب ، شما معمولاً می خواهید بدون استفاده از نرم افزار خود برای استفاده از multithreading o از منابع خود استفاده کنید.

با SQL Server 2017 (MS-SQL) در CentOS 7 With Docker شروع کنید

با SQL Server 2017 (MS-SQL) در CentOS 7 With Docker شروع کنید

پیش نیاز موتور داکر 1.8+. حداقل 4 گیگابایت فضای دیسک. حداقل 4 گیگابایت رم. مرحله 1. نصب Docker به منظور نصب SQL-Server ، Docker mus

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد