VyOS

방화벽 기능이 있는 오픈소스 라우터

  1. zone 기반 방화벽
  2. VPN

VyOS = 라우터 : 외부와 내부의 경계에 위치


2 core 2GB 5GB

# 설치가 되어있지 않은 상태
# GRUB : 리눅스의 부트로더

conf ↔ exit

자주 쓰는 명령어

    • set : 설정
    • edit : 수정
    • delete : 삭제
    • commit : 설정 혹은 수정, 삭제한 내용들을 반영

※ rollback 이 잘 안되고, 재부팅을 하면 기존설정이 다 날아갈 수 있음. 약간 불안정함.

따라서 되도록이면 재부팅이나 종료를 안하는게 좋습니다.

  • 설정(set) 인터페이스(int) 이더넷(eth) 이더넷 인터페이스이름(eth0)의 주소(add)
set int eth eth0 add 211.183.3.250/24

  • ssh라는 서비스의 포트를 22번으로 설정
set service ssh port 22
  • 반영
commit
  • 인터페이스의 아이피 설정 및 ssh 포트를 정했기때문에 xshell로 접속해보자

  • GW 추가
set system gateway-address 211.183.3.2
  • 반영
commit

 

여러 인터페이스를 추가하고 설정할때, 반드시 하나씩 차례대로 만들고-반영, 또 만들고-반영하기!

ex. 장치 두개 추가하고, 두개 설정 등 절대 금지!!!

 

inter 가로지르는 + face 경계면 → interface 서로 다른 무언가를 가로지르는

  • interface: eth0, eth1, eth2 ... NIC
  • NIC: Network Interface Card = Network Adapter

1. 물리적

  • 첫번째 NIC를 추가

  • 두번째 NIC를 vmnet 5번에 연결

2. 논리적

  • 논리적으로도 10.10.5.0 /24라는 대역에 내가 추가한 NIC(vmnet5)에 두고 싶음

# 해당 대역이 논리적으로 유효한지 확인 후 vmnet 5 대역 수정

  • 추가한 NIC의 IP 설정
vyos@vyos# set int eth eth1 add 10.10.5.250/24
vyos@vyos# commit


  • VyOS의 eth1이 실제 vmnet5 에 존재하는지 확인

# mint를 vmnet5에 두고 네트워크 설정 후 통신을 확인

  • 민트 IP 설정

 

# mint에서 eth1과 통신
# vmnet 6 정의


 

  • VyOS에 NIC 추가

# 추가된 인터페이스 확인

  • 추가한 NIC의 IP 설정
vyos@vyos# set int eth eth2 add 172.16.101.250/24
vyos@vyos# commit


172.16.101.0 /24 대역에 web서버를 두고 vyos의 eth2와 통신이 되도록 해보세요!


라우터) 위에서 NAT를 안해도 통신되는 이유?

→ 원래는 안되는 것이 맞는데,
     VMware의 체계상, 동등한 입장의 네트워크라서 통신되어 왔다

 

VyOS) 통신이 안되는 이유?

가는 방법은 알아도 오는 방법을 모르기 때문
     NAT를 해줘야 한다


vyos@vyos# set int eth eth0 description public
vyos@vyos# set int eth eth1 description private
vyos@vyos# set int eth eth2 description dmz    
vyos@vyos# commit

NAT 설정

PAT 설정

- private(10.10.5.0 /24)

# 현재 민트에서 외부로 핑이 안되는 상황

  • mint 애들을 vyos의 211.183.3.250 GW로 빠져나올 수 있도록 설정
# 출발지 대역 정의(GNS3에서는 access-list로 정의)
vyos@vyos# set nat source rule 10 source address 10.10.5.0/24

# 외부로 나가는 인터페이스
vyos@vyos# set nat source rule 10 outbound-interface eth0

# 변환 후의 주소
vyos@vyos# set nat source rule 10 translation address 211.183.3.250

vyos@vyos# commit

# nat source rule 10을 삭제를 원한다면 delete nat source rule 10 이런식으로 set 대신 delete를 쓰면 된다.

# 민트에서 8.8.8.8로 핑을 치면 통신 확인 가능

- DMZ(172.16.101.0 /24)

vyos@vyos# set nat source rule 20 source address 172.16.101.0/24
vyos@vyos# set nat source rule 20 outbound-interface eth0
vyos@vyos# set nat source rule 20 translation address 211.183.3.250
vyos@vyos# commit

# DMZ PAT 후에 웹서버에서도 통신 확인 가능

웹서버에 httpd를 설치하고, 웹서버에 접속시 DMZ server라는 문구가 뜨도록 해보자!
[root@web ~]# echo 'DMZ server' > /var/www/html/index.html
[root@web ~]# cat /var/www/html/index.html
DMZ server

# host-connection으로 접속

  • VyOS에선 host-connection을 사용하지 않을 예정

# 꼼수 통로가 사라짐
# 172.16.101.80으로 host-connection 꼼수 접속할 수 없음

DNAT 설정

- DMZ의 웹서버

  • 외부에서 내부로 유입되는 인터페이스는 eth0
vyos@vyos# set nat destination rule 100 inbound-interface eth0
  • eth0 으로 유입되는, 목적지가 80 포트이며 tcp인 애들은 172.16.101.80 으로 보내주겠다.
vyos@vyos# set nat destination rule 100 translation address 172.16.101.80
vyos@vyos# set nat destination rule 100 protocol tcp
vyos@vyos# set nat destination rule 100 destination port 80

# 브라우저에서 eth0의 주소를 찍으면 접속 = DNAT 성공


문제)

host-connection을 끊은 현재 상황에서 VyOS와 DMZ의 웹서버에 ssh로 접속되도록 해보세요!
  • set service ssh port 22

  1. 포트포워딩(포트를 보내줌, DNAT): vyos의 ssh 서비스 포트를 222번으로 수정 후 DNAT
  2. web 서버의 ssh 포트를 수정 후 DNAT
  3. DNAT를 할 때 목적지 포트와 translation되는 포트를 컨트롤

ex. GNS3의 경우 ip nat inside source static tcp 172.16.101.80 80 211.183.3.250 8888
      이렇게 구성했다면, destination port: 8888일 것이고, translation port: 80일 것

      따라서 nat destination의 rule을 설정할 때 해당되는 옵션을 찾아서 구성해야 한다.

ex. eth0의 2222를 destination port로 접근하는 대상을 web서버에 22번 포트로 들여보내주겠다.(translation port)


방법1)

 

vyos@vyos# set service ssh port 222
vyos@vyos# commit
  • 변경된 포트에 맞춰 xshell도 수정

# eth0 의 222번 포트로 접근시 vyos로 접속이 잘 된다.

 

  • DNAT 설정
    eth0의 22번 포트를 목적지로 했을때 웹서버의 동일한 포트로 연결
set nat destination rule 200 destination port 22
set nat destination rule 200 protocol tcp
set nat destination rule 200 inbound-interface eth0
set nat destination rule 200 translation address 172.16.101.80
set nat destination rule 200 translation port 22
commit

# 웹서버로 접속이 잘 된다.

 

방법2)

# 방법1의 DNAT 삭제

  • vyos로 접속하는 port 원상복구
vyos@vyos# set service ssh port 22
  • 웹서버의 ssh 설정파일에서 ssh port를 222번으로 수정
[root@web ~]# vi /etc/ssh/sshd_config

  • ssh 서버 재시작
[root@web ~]# systemctl restart sshd
set nat destination rule 200 destination port 222
set nat destination rule 200 protocol tcp
set nat destination rule 200 inbound-interface eth0
set nat destination rule 200 translation address 172.16.101.80
commit

# cmd창 열어서 ssh으로 접속 확인

방법3)

# 방법2의 DNAT 삭제

  • 방법2의 web서버 ssh 포트 22번으로 복구
[root@web ~]# vi /etc/ssh/sshd_config

[root@web ~]# systemctl restart sshd

 

set nat destination rule 200 destination port 2222
set nat destination rule 200 protocol tcp
set nat destination rule 200 inbound-interface eth0
set nat destination rule 200 translation address 172.16.101.80
set nat destination rule 200 translation port 22
commit

# 포트 수정 후
# 접속이 잘 된다.






 









'AWS Cloud School 8기 > VyOS' 카테고리의 다른 글

28일차) 2025-02-07 (VyOS+http/tftp/ssh)  (0) 2025.02.07