IP 패킷을 전달하기 위해 리눅스 박스를 라우터로 설정하려면 어떻게해야합니까?


25

ip 패킷 전달에 대한 네트워크 실험을하고 있지만 왜 작동하는지 모르겠습니다.

정적 IP 주소 (eth0 : 192.168.100.1, eth1 : 192.168.101.2)를 가진 두 개의 네트워크 인터페이스 eth0 및 eth1을 가진 Linux 시스템이 있습니다.

내 목표는 간단합니다. 서브넷 192.168.100.0/24의 대상이있는 eth1에서 eth0으로 IP 패킷을 전달하고 서브넷 192.168.101.0/24의 대상이있는 eth0에서 IP 패킷을 eth1로 전달하고 싶습니다.

나는 다음과 같이 IP 전달을 켰다.

sysctl -w net.ipv4.ip_forward=1

내 라우팅 테이블은 다음과 같습니다.

# route -n
Kernel IP routing table
Destination     Gateway     Genmask        Flags Metric Ref   Use  Iface
192.168.100.0   0.0.0.0     255.255.255.0  U     0      0       0  eth0
192.168.101.0   0.0.0.0     255.255.255.0  U     0      0       0  eth1

그러나 192.168.100.25에서 192.168.101.47로 핑을 시도하면 작동하지 않습니다.

답변:


23

다음과 같은 명령을 사용하여 전달 규칙 을 추가해야합니다 iptables.

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT

참조 man iptables자세한 내용은, 또는 예를 들어, 하우투 기사를 인터넷 검색 리눅스 기반 컴퓨터에서 NAT 라우터를 설정하는 방법

여기 에 주제를 자세히 설명하는 Linux IP Masquerade HOWTO 가 있습니다.

또한 FORWARDACCEPT규칙을 재정의하는 다른 규칙 (예 : 체인) 이 없는지 확인해야합니다 . 있다면 삭제하고 싶을 것입니다.


이유를 모르겠지만 여전히 작동하지 않습니다. 테이블 iptables -A FORWARD -i eth0 -o eth1 -j ACCEPTiptables -A FORWARD -i eth1 -o eth0 -j ACCEPT테이블 에 모두 추가했습니다 . 그리고 나의 INPUT, OUTPUT 및 FORWARD 정책은 모두 ACCEPT입니다.
Yishu Fang

잘못 구성 할 수있는 것들이 많이 있습니다. 예를 들어, 호스트의 IP는 "내부"네트워크의 호스트에서 "게이트웨이 IP"로 지정해야합니다. 따라서 IP가 "로컬"네트워크 범위 내에 있지 않으면 패킷을 게이트웨이 머신. 이는 ADSL 라우터가 LAN의 호스트에 대한 게이트웨이로 등록 된 일반적인 설정과 유사합니다.
Sergey

traceroute호스트에서 사용 하면 패킷이 "라우터"(192.168.100.1)로 이동하지만 더 이상 진행되지 않음을 나타냅니다.
Yishu Fang

1
@UniMouS : MASQUERADE에 대해 잊어 버린 것 같습니다-답변을 편집하고 기사에 대한 새로운 링크를 추가했습니다.
Sergey

2

192.168.100.25 및 192.168.101.47에 경로를 추가해야합니다.

전달 서버에 IP 192.168.100.1 및 192.168.101.1이있는 경우 클라이언트 192.168.100.25에 추가합니다

ip route 192.168.101.0/24 via 192.1268.100.1

클라이언트 192.168.101.47에서

ip route 192.168.100.0/24 via 192.168.101.1

(이것은 전달이 가능하고 iptables가없는 상태에서 작동합니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.