리눅스 멀티 nic 라우팅 문제

   조회 4163   추천 0    

안녕하세요.

리눅스 centos8.5 서버에 멀티 nic에 각각 다른 네트워크와 게이트웨이가 있어서 문의드립니다.


nic1

IP : 192.168.8.34

GW : 192.168.8.1

subnet : 255.255.255.0

DNS : 8.8.8.8


nic2

IP : 172.16.8.34

GW : 172.16.8.1

subnet : 255.255.255.0


위와 같을때 ip route add 명령을 통해 적용해보니

한쪽이 되면 한쪽이 안되는 상황이 생기고 있습니다..ㅠ


각각 게이트웨이를 통해 수발신 모두 통신이 되게 하려면 어떻게 잡아줘야할까요..

한달째 해결을 못하고 있어서 염치 무릎쓰고 질문글을 다시 올려봅니다..


구글에 나오는 gw를 빼고,,, 등등..해보았으나 한쪽만 되는 상황이네요.

nic1을 통해 인터넷도 되어야하고,, nic2는 그 자체 gw통신이 되어야 하는 상태라 너무 어렵네요...


짧은글 일수록 신중하게.
술이 2022-12
당연한 결과입니다.
디폴트 게이트웨이는 0.0.0.0  모든경로를 사용한다는겁니다.
둘다 빼거나 한쪽은 게이트웨이 빼야됩니다. 둘다 빼버리면 인터넷이 안될건데 인터넷을 사용할 NIC만 디폴트 게이트웨이를 입력합니다.

나머지는 게이트웨를 넣을게 아니라 원하는 경로 대역을 액세스할 라우팅 경로를 넣는겁니다.

저게 인바운드만 하는 상황이라면 문제가 될리가 없겠지만 아웃바운드는 당연히 되었다 안되었다 하겠지요.
     
다이다이 2022-12
한쪽씩도 빼보았으나,,,
어제 나가는건 되는데 들어오는게 안되는 상황이 생겼었습니다..

nic2의 실제 대역은 172.16.8.0/24를 사용하지만..
nic2를 통해 통신을 할때에는
210.212.12.0/24 의 대역중 특정 IP를 통해 데이터 통신을 하고있습니다.

우리쪽에서 상대방 요청이 210.212.12.20이면,
상대방에서 우리쪽 요청이 210.212.12.30을 통해 요청을 하는것입니다.

전용선에 vpn 장비를 통한 통신이라 그런지 복잡하네여.
yee223 2022-12
PBR 하셔야 할것같은데요~?

https://forums.centos.org/viewtopic.php?t=61217

7 버전 자료긴 한데  참고해보시면 될것같습니다~
     
다이다이 2022-12
이부분도 어제 해보았으나,, 동일한 현상입니다.
ㅠㅠ
이 방법대로 하면
우리쪽에서 210.212.12.140 IP 로 텔넷은 연결 가능하나,
상대쪽에서 우리쪽으로 210.212.12.150 IP로 텔넷 접속이 불가합니다.
DeepSky 2022-12
나열하신 명령어만 봤을 땐 문제가 없는거 아닌가요?
나열하신 IP 대역이 (당연하지만) 사설 IP 대역임을 가정하고 외부 네트워크는 제외하면, nic 1 로 192.168.8.x 대역 통신 가능하고, nic 2 로 172.16.8.x 대역 통신이 가능할 것 같습니다.
위 대역을 제외한 외부 네트워크는 막줄에 nic 1 을 통해서 한다고 하셨으니 Default Gateway 는 192.168.8.1 이 되어야 하겠지요.
nic 2 는 그 자체 GW 통신이 되어야 하는 상태라고 하셨는데, 이는 nic 2를 이용해서 172.16.8.1 로 ping 은 나갈 수 있습니다. ( 당연히 서버에서 172.16.8.1 을 거쳐서 외부 네트워크로 패킷은 발송 불가 )

딱 이정도는 되는게 맞다고 생각하네요.

만약 서버에서 어떨 때는 nic 1 으로 통신하고, 저럴 때는 nic 2 으로 통신하고 싶으시다면 위 방법 말고 다른 방법을 찾아보셔야 합니다.
     
다이다이 2022-12
특정 210.212.12.0./24 대역으로 나가거나 들어오는 통신에 대해서만 라우팅이 필요한데 방법이 없네요..
          
DeepSky 2022-12
윗 댓글들을 분석해보았을 때, 결국 공인 IP 대역인 210.212.12.0 / 24 대역에 대해서 서버가 어떻게 인식하느냐에 따라 다른거 같습니다.
즉 서버 자체에 210.212.12.0 / 24 대역의 IP 가 1 개도 없기 때문에, 이를 ip route 명령어로 입력하는게 불가합니다.

서버에서 공인 IP 대역인 210.212.12.0 / 24 로 나가기 위해서는 Default Gateway 인 nic 1 을 거쳐서 텔넷 접속이 가능합니다.
반대로 사설 IP 대역인 172.168.8.1 GW 장비에서 공인 IP 대역인 210.212.12.150 을 사용중이라면, 150 으로 인입되는 텔넷 명령어를 172.168.8.34 로 넘겨주는 포트 포워딩 기능이 필요하다고 생각합니다.
다이다이 2022-12
현재 라우팅은 아래와 같이 작업하였습니다.

ip route add 192.168.8.0/24 dev eno5 table 1
ip route add 172.16.8.0/24 dev eno6 table 2
ip route add default via 192.168.8.1 table 1
ip route add default via 172.16.8.1 table 2
ip rule add from 192.168.8.0/24 table 1 priority 100
ip rule add from 172.16.8.0/24 table 2 priority 110
ip route flush cache

헌데,,, vpn 내부 통신용 210.212.12.0 대역으로 traceroute시 외부로 빠져나갑니다
술이 2022-12
라우팅은 한쪽만 선언해주는겁니다 혹시 교차 크로스로 선언한건 아니죠? 라우팅 양쪽노드 둘다 선언해주는줄 알고 교차로 선언했다가 한쪽만 되고 그런적이 있었습니다. 이런상황에서는 꼬입니다.
참고고 위와 비슷한 상황을 만들어서 사용중인데 네트워크 구성 설계를 좀 봐야 알거 같네요.
찬이 2022-12
들어오는건 iptables 를 통해 mangle 을 해줘야합니다.
non-default gateway interface 의 input packet 에 대해 mark 하여 2번째 라우팅테이블을 타게 해야 합니다. (ip route의 fwmark 통해)
안그러면 nic2로 들어온것도 nic2의 cidr으로부터 온게 아니면 nic1로 나갑니다.

[인터넷 접속이 되어야 하니] nic1 이 primary default route 로 설정하고,
nic2 는 필요한 대역을 static route 해야 합니다.

nic2 에 대한 테이블이 rt_secondary 라고 가정하면

ip rule add fwmark 2 table rt_secondary
ip route add default via 172.16.8.1 table rt_secondary
ip route flush cache

잘 기억은 안나는데...

iptables -t mangle -N secondary_prerouting
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -i eth1 -j secondary_prerouting # eth1 로 들어오는 패킷에 대해
iptables -t mangle -A secondary_prerouting -m conntrack --ctstate NEW -j MARK --set-mark 2 # 들어오는 패킷에 대해 2 번으로 mark 합니다.
iptables -t mangle -A secondary_prerouting -m mark --mark 2 -j CONNMARK --save-mark # 2번 mark 를 connmark 에도 저장합니다.
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark # connmark 에 저장된 mark 를 불러옵니다. 이를 통해 fwmark 2 의 route table 이 먹힙니다.
다이다이 2022-12
상대편 장비문제로 확인되었습니다..
많은 답변 주신분들께 진심으로 감사드립니다.

위에 말씀주신 내용은 오늘 별도로 테스트 서버에 적용하면서 어떤부분인지 공부할 수 있는 시간을 가져보겠습니다.
다시한번 감사드립니다. (__)
박문형 2022-12
그나마 해결 되었다니 다행이네요..

앓는 이가 재대로 빠진 기분일 듯합니다..
     
다이다이 2022-12
마음고생이..엄청났네요 ㅠ
무조건 너네쪽 장애다..고 우겨대다가 알고보니 아니었을때의 허망함..
한달간 삽질의 연속이었네요 ㅎㅎ


QnA
제목Page 1698/5703
2014-05   5119202   정은준1
2015-12   1654621   백메가
2020-11   4004   Jgon
2023-09   4004   오성기
2015-01   4004   GoverZG
2019-10   4004   시도니
2020-11   4004   신민철2
2016-11   4004   박성만
2015-01   4004   황진우
2017-04   4004  
2015-04   4004   모아레김호열
2019-01   4004   이흥저흥
2014-03   4004   Nikon
2014-11   4004   VSPress
2017-05   4004   행복찾기
2014-11   4005   silverwing
2014-02   4005   이성길
2022-01   4005   Elsaphaba
2013-12   4005   여주이상돈
2018-02   4005   minsuk
2014-05   4005   AKA지니
2015-02   4005   방o효o문