이 게시물은 네트워크가 작동하는 방식과 Linux 장비를 가정이든 비즈니스이든 관계없이 네트워크를 조금 더 보장하는 라우터로 전환하는 방법에 대해 조금 설명하려고합니다. 이제 사업에 착수합시다.
라우팅 및 필터링
라우팅에 대해 이야기하고 이해하기 위해 먼저 라우터의 기능을 정의 할 수 있습니다. 이를 위해 라우터는 네트워크를 생성하고 다른 장비와의 연결을 허용하는 것 외에도 (AP, 스위치, 허브 등으로이를 수행 할 수 있음을 알고있는) 두 개의 서로 다른 네트워크를 서로 연결할 수 있다고 말할 수 있습니다.
이미지에서 볼 수 있듯이 라우터에 의해 생성되고 두 인터페이스 중 하나에 도달하는 로컬 네트워크 "10.0.1.0"이 있습니다. 그런 다음 다른 인터페이스의 라우터에는 인터넷에 연결할 수있는 공용 IP가있는 다른 네트워크가 있습니다. 라우팅 기능은 기본적으로이 두 네트워크 간의 중개자 역할을하여 통신 할 수 있도록합니다.
라우터로서의 Linux.
당연히 리눅스 커널은 이미 "포워딩"기능을 가지고 있지만 기본적으로 비활성화되어 있으므로 Linux에서이 작업을 수행하려면 파일로 이동해야합니다.
/proc/sys/net/ipv4/ip_forward
여기서 우리는 0 "1"만 포함 된 파일임을 알 수 있습니다.이 동작을 활성화하려면 XNUMX "XNUMX"로 변경해야합니다. 안타깝게도 컴퓨터를 다시 시작할 때 삭제됩니다. 기본적으로 활성화 된 상태로 두려면 다음 명령을 사용해야합니다.
sysctl net.ipv4.ip_forward=1
또는 파일에서 직접 편집 /etc/sysctl.conf. 배포에 따라이 구성은 /etc/sysctl.d/.
기본적으로 Linux에는 일반적으로 LAN 네트워크 및 라우터에 대한 연결의 구성 인 라우팅 테이블이 있어야합니다. 이 라우팅을 보려면 두 가지 명령을 사용할 수 있습니다.
route -n
o
netstat -nr
두 명령 모두 동일하게 반환되어야합니다.
일반적으로이 구성은 Linux가 게이트웨이 역할을하기에 충분하며 다른 컴퓨터가 컴퓨터를 탐색 할 수 있습니다. 예를 들어, Linux가 로컬이든 아니든 두 개 이상의 네트워크를 연결하도록하려면 고정 경로를 사용할 수 있습니다.
내 Linux에 두 개의 네트워크 인터페이스가 있다고 가정 해 보겠습니다. 첫 번째는 네트워크가 172.26.0.0 인 인터넷 연결이 있고 두 번째 (10.0.0.0)에는 다른 로컬 네트워크의 일부 컴퓨터가 있습니다. 패킷을 다른 네트워크로 라우팅하려면 다음을 사용할 수 있습니다.
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8
일반적으로 다음과 같습니다.
route add -net REDDESTINO netmask MASCARA gw IPDELLINUX
우리가 주면 노선 -n 이 네트워크의 존재 여부에 관계없이이 라우팅은 테이블에 고정됩니다.
상기 라우팅을 제거하려면 다음을 사용할 수 있습니다.
route del -net 10.0.0.0 netmask 255.0.0.0
iptables.
기본적으로 iptables는 패킷, 발신, 수신 또는 기타 필터링에 사용되므로 네트워크 트래픽을 관리하기위한 훌륭한 도구입니다. 음, iptables는 동일한 컴퓨터에서 트래픽을 필터링 할 수있는 것과 마찬가지로이를 통과하는 트래픽도 필터링 할 수 있습니다. (전송). Iptables는 테이블, 체인 및 작업으로 나눌 수 있습니다.
- 무대: 기본적으로 두 개의 테이블이있을 수 있습니다. 필터, 패킷을 필터링하고 NAT 즉, 한 네트워크에서 다른 네트워크로 이동하는 것입니다.
- 쇠사슬: 체인은 필터링하거나 헤엄 치려는 트래픽 유형, 즉 테이블을 적용 할 트래픽 유형을 나타냅니다. 다음과 같을 수 있습니다. 입력: 들어오는 트래픽, 산출: 아웃 바운드 트래픽 또는 앞으로: 통과하지만 적절한 연결이 아닌 트래픽입니다.
- 또한 나타날 수 있습니다 포스트라우팅, 라우팅 된 후 특정 방식으로 패킷을 처리하는 데 사용됩니다.
- 작업 : 액션은 기본적으로 체인으로 수행 할 액션입니다. 이 작업은 하락, 트래픽을 파괴하거나 동의하기. 트래픽이 이러한 작업을 수행 할 수 있도록합니다.
IPTABLES 규칙은 생성 된 순서대로 저장 및 실행되며, 규칙이 이전 규칙을 삭제하는 경우 순서의 마지막 규칙이 항상 적용됩니다.
방화벽 정책.
일반적으로 방화벽은 자연스럽게 두 가지 방식으로 작동합니다.
- 다음을 제외한 모든 트래픽 허용 또는
- 다음을 제외하고는 트래픽을 허용하지 마십시오.
정책을 적용하려면 IPTABLES-P 액션 체인
여기서 문자열은 트래픽 유형 (INPUT, OUTPUT, FORWARD, POSTROUTING ...)을 나타내고 작업은 DROP 또는 ACCEPT입니다.
예를 살펴 보겠습니다.
여기에서 처음에는 핑을 할 수 있었고 모든 OUTPUT 트래픽이 DROP이거나 허용되지 않는다고 IPTABLES에 알 렸습니다. 그런 다음 IPTABLES에게 수락하라고 말했습니다.
방화벽을 처음부터 구축하려면 항상 다음 규칙을 적용해야합니다. 다음을 제외하고는 트래픽을 허용하지 않습니다.이를 위해 규칙을 적용합니다.
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
반환하려면 동일한 내용을 작성하고 DROP을 ACCEPT로 바꿉니다.
이 시점에서 모든 트래픽이 거부되었으므로 IPTABLES가 가질 수있는 트래픽을 알리기 시작합니다.
구문은 다음과 같습니다.
iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción
장소 :
문자열 = INPUT, OUTPUT 또는 FORWARD
origin_ip = 패킷의 출처, 단일 IP 또는 네트워크 일 수 있으며이 경우 마스크를 지정해야합니다).
destination_ip = 패킷이가는 곳. 이것은 단일 IP 또는 네트워크 일 수 있으며이 경우 마스크를 지정해야합니다).
프로토콜 = 패킷에서 사용하는 프로토콜을 나타냅니다 (icmp, tcp, udp ...).
포트 = 트래픽의 목적지 포트.
액션 = DROP 또는 ACCEPT.
예 :
모든 제한된 정책이 적용됩니다.
그런 다음 TCP 프로토콜을 사용하여 포트 80 HTTP 및 443 HTTPS를 통해 트래픽을 가질 수 있도록 규칙을 추가합니다. 그런 다음 포트 53 DNS 클라이언트가 도메인을 확인하는 데 적용됩니다. 그렇지 않으면 탐색하지 않습니다. 이것은 udp 프로토콜에서 작동합니다.
라인 :
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
그 이유는 다음과 같습니다. 예를 들어 HTTP 요청을 할 때 서버의 포트 80에 연결하지만 정보를 반환 할 서버는 모든 포트를 통해 연결해야합니다. (일반적으로 1024 이상).
모든 포트가 닫혀 있기 때문에 1024보다 높은 모든 포트를 열지 않으면 달성되지 않습니다 (나쁜 생각). 이것이 말하는 것은 내가 직접 설정 한 연결에서 들어오는 모든 트래픽이 허용된다는 것입니다. 원칙적으로 제가 시작한 연결입니다.
이 정보가 마음에 드셨기를 바랍니다. 다음에서는 Firewal 용 NAT, 프록시 및 스크립트에 대해 설명하겠습니다.
이것은 많은 기업가가 자체 방화벽을 제조하기 위해 취하는 기반입니다. 이것이 시장에 내장 된 리눅스를 사용하는 방화벽 브랜드가 너무나 많은 이유입니다.
훌륭한 기사. 두 번째 부분을 기대합니다.
아주 좋은 설명, 그것은 내 작업의 대리를 이해하는 데 도움이되었습니다. 감사합니다
안녕하세요 Jlcmux,
훌륭합니다. 정말 마음에 들었습니다. 상대방은 언제 이용 가능합니까?
공유해 주셔서 감사합니다.
댓글 주셔서 감사합니다.
나는 어제 다른 부분을 보냈고, 그날 그들이 그것을 출판 할 것이라고 생각합니다.
인사말.
아주 좋은 기사 친구 @ Jlcmux, 그는 내가 한동안 가지고 있었던 몇 가지 의구심을 분명히 해줬 기 때문에 정말 배웠습니다. 기사의 출처, Sébastien BOBILLIER의 책, 잘 slau2s 그리고 지금 두 번째 부분 인 salu2s를 확인합니다.
안녕하세요 이스라엘에 대해 논평 해 주셔서 감사합니다.
나는 책을 물리적 형태로 가지고 있음이 밝혀졌습니다. 하지만 Google 도서에서이 링크를 찾았습니다. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=
완성 된 것 같아요.
아주 좋은 기사입니다. 질문을 추가합니다. 전용 하드웨어와 관련하여 Linux를 라우터로 사용하면 어떤 이점이 있습니까? 아니면 운동을 위해서입니까? 전용 배포판이 있다는 것을 알고 있지만 이전 PC를 구할 것인지 아니면 구성에 더 많은 유연성을 제공 할 것인지는 모르겠습니다.
글쎄, 장단점은 이것을 구현할 시나리오에 달려 있다고 생각합니다. 왜 집에 UTM이나 그런 것을 사지 않을 것입니까? 그리고 그것을 감당할 수없는 소규모 기업을위한 것일 수도 있습니다. 이것의 모든 논리를 이해하는 데 도움이되고 전용 FWall을 더 잘 구성 할 수 있으므로 연습으로도 좋습니다. 그 외에도 거의 모든 장치가 실제로 가지고있는 것은 임베디드 Linux입니다.
인사말.
안녕하세요, 질문입니다. Linux에서 네트워크 간의 유사한 라우팅을 위해 "인공"인터페이스를 생성 할 수 있습니까? (패킷 추적기 스타일) 가상 머신에서 작동합니까? 예를 들어 eth0이있는 경우 (물론 단일 카드가 있으므로) eth1을 만들어 다른 네트워크를 만들 수 있습니까? 아주 좋은 선생님!
물론 Linux에서는 가상 인터페이스를 만들 수 있습니다. eth0이 있으면 eth0 : 0, eth0 : 1, eth0 : 2 ... 등을 가질 수 있습니다.
공유 해주셔서 감사합니다