Overview#
(2020.09.21)
위 사진과 같은 Openshift 클러스터 구성을 위한 네트워크 설정에 대해서 서술하겠습니다.
- VMware사용
- Openshift 클러스터는 Private Network 구성
- 각 클러스터의 Public 통신은 Bastion을 통해 이뤄짐
1. VMware에서 2개의 NIC 셋업#
vmware에서 vm들을 생성할때에는 필요한 네트워크 어댑터들을 수동으로 생성해서 부여해줘야합니다.
이 챕터에서는 Public NIC와 Private NIC를 가지고 네트워크 어댑터를 만든 다음,
bastion노드에 두개의 어댑터를 추가해주겠습니다.
물리적 NIC 확인#
제가 사용한 vmware에는 4개의 물리적NIC가 있다는 점과 현재는 두개의 NIC만 VLAN과 연결되어있다는 것을 확인할 수 있습니다.
첫 번째는 Private VLAN과 연결된 인터페이스이고
두 번째는 Public VLAN과 연결된 인터페이스 입니다.
이부분은 GUI상으로 어떻게 연결되어있는지 확인하는 방법을 몰라서, 실제로 네트워크인터페이스를 연결해보고 ping을 날려봐서 확인했습니다.
더 좋은 방법을 찾으면 업데이트하겠습니다…
가상 스위치 생성#
활성화된 NIC들을 각각의 가상스위치를 생성해 연결해줍니다.
포트그룹 생성#
그 다음, vm에서 사용할 포트그룹을 생성해줍니다. (VM PrivateNetwork
, VM PublicNetwork
)
bastion에 어댑터 추가#
Bastion vm을 만들 때 생성한 두 개의 네트워크 어댑터를 추가해줍니다.

bastion 네트워크 설정#
- CentOS기준 위치
/etc/sysconfig/network-script
자동으로 생성된 네트워크 인터페이스인 (ex)ens192와 ens224를 수정
Public Network#
BOOTPROTO
: static
으로 변경ONBOOT
: network시작할때 변경점이 적용되게 yes
로 변경IPADDR
: 해당 vm에 부여할 ip (연결해줬던 vlan의 subnet범위를 확인)GATEWAY
: 연결한 vlan의 gateway를 확인NETMASK
: "DNS1
: dns1이 자기 자신인 이유는 ocp클러스터의 dns서버가 bastion이기 때문. 만약 dns서버가 다른곳이라면 해당 ip를 적을 것
Private Network#
public과 마찬가지로 BOOTPROTO
, ONBOOT
, IPADDR
, NETMASK
설정을 해줍니다.
GATEWAY
를 적지 않는 이유는 bastion에서는 public쪽 게이트웨이만 사용할 예정이고 지정된 subnet밖으로 나가지 않을것이기 때문입니다.
네트워크 재시작:
$ systemctl restart network
그리고 bastion의 네트워크를 다시 살펴보면 두개의 네트워크 인터페이스를 포함하고 있다는 것을 확인할 수 있습니다.
$ ip a
라우터 정보도 보면 default gateway로 public gateway가 설정되어 공인통신을 하는데 문제없습니다.
$ ip r
private gateway가 설정되어있지 않아서 할당된 private vlan밖으로 나갈 순 없지만 openshift클러스터는 할당된 vlan의 subnet 내에서 사용할 것이기 때문에 문제 없습니다.
2. bastion의 gateway설정 (iptables)#
ocp 클러스터의 게이트웨이가 되어줄 bastion의 네트워크 설정은 마쳤습니다.
이제 각 노드에서 나올 네트워크 패킷들을 bastion에서 포워딩해주는 설정을 해주도록 하겠습니다.
iptables 규칙 설정#
1. ens로 나가는 패킷 포워딩을 허가
$ iptables -A FORWARD -o ens192 -j ACCEPT
$ iptables -A FORWARD -o ens224 -j ACCEPT
2. ip forward설정
$ sysctl -w net.ipv4.ip_forward=1
$ sysctl -a | grep ip_forward
3. MASQUERADE
위 단계까지 거치고 나면 LAN상의 시스템들끼리 통신할 수 있습니다.
그러나 인터넷과 같은 외부 시스템과의 통신은 허용되지 않습니다.
LAN 상의 시스템이 가상 IP 주소를 가지고 외부 public 네트워크와 통신할 수 있도록 허용하려면, LAN 시스템에서 외부로 향하는 요청이 방화벽 외부 장치(이 예시에서는 ens192)의 IP 주소로 나가도록 방화벽에 IP masquerading 기능을 설정해야합니다.
$ iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE
테스트용 노드 생성#
아래와 같이 사설망에 vm을 생성해줍니다.

네트워크 설정은 위와 비슷하게 설정해줍니다.
GATEWAY정보는 패킷포워딩을 bastion노드로 보낼 것이므로 bastion노드의 private ip를 기입해줍니다.
네트워크를 재시작하고나면 다음과 같이 private ip가 할당된 것을 확인할 수 있습니다.
default gateway도 bastion으로 잘 설정되었습니다.
원래대로라면 10.x대역의 ip는 공인 ip가 아니기때문에 인터넷 연결이 되지 않아야 하지만, 위의 포워딩 설정을 통해서 bastion을 지나 공인통신이 되는 것을 확인할 수 있습니다.
bastion이 게이트웨이역할을 잘 수행한다는 것을 확인하였으니, 이제 openshift cluster를 구성하시면 됩니다.
주의하셔야 할 점은, CoreOS를 설치할때 ip파라미터 정도 입니다.static ip
: 할당할 private ipgateway
: bastion private ipnetmask
: private subnet의 netmask
끝!