VPS에 OpenVPN과 PPTP를 설치했습니다. 명확한 답변을 얻을 수 없는 몇 가지 질문이 있습니다.
1.1.1.1(eth0, 공용 IP 주소)에 OpenVPN을 설치하고 1.1.1.2(eth0:1, 공용 IP 주소)에 PPTP를 설치하고 싶습니다. 저는 SNAT를 통해 이것을 달성했습니다. 그러나 내가 읽은 모든 튜토리얼에서는 ppp+를 eth0으로 전달하거나 그 반대로 전달할 것을 권장하며 tun 인터페이스에도 마찬가지입니다.
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT
내 설정은 CentOS, 전용 서버입니다.
어떤 이유로 나는 iptables가 모든 트래픽을 eth0에서 tun0으로 라우팅하고 거기서 멈출 것이라고 가정합니다.
- 이러한 순방향 규칙이 서로 충돌합니까?
- 충돌을 피하기 위해 ppp+를 eth0:1로 전달해야 합니까? 가능합니까? 나는 아직 그것을 이해하지 못했습니다.
- iptables는 이러한 규칙을 통해 tun 및 ppp 특정 트래픽을 라우팅할 만큼 똑똑합니까?
답변1
제가 올바르게 이해했다면 OpenVPN 터널과 PPTP 터널이 필요합니다. 각각 터널 트래픽을 eth0으로 라우팅하지만 각각 자체 IP를 갖습니다.
제가 틀렸다면 명확히 설명해주세요. 최선을 다해 도와드리겠습니다. 그러나 나는 이 스크립트가 귀하의 요구 사항을 충족할 것이라고 믿습니다.
#!/bin/bash
# This enables forwarding in the kernel.
echo 1 > /proc/sys/net/ipv4/ip_forward
# This will allow all return traffic to pass back to the originating socket
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# This permits forwarding traffic that came in either tunnel and bound out eth0.
# Note: This does not explicitly permit forwarding between tunnels.
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
# This blocks all forwarding that is not explicitly permitted.
# Removing this line would be unsafe.
iptables -A FORWARD -j DROP
# These lines will SNAT the traffic coming from each tunnel to the
# appropriate IP address.
iptables -t nat -A POSTROUTING -i tun0 -o eth0 -j SNAT --to-source 1.1.1.1
iptables -t nat -A POSTROUTING -i ppp+ -o eth0 -j SNAT --to-source 1.1.1.2
이 스크립트를 여러 번 실행하면 규칙이 설정됩니다. 다음 스크립트는 방화벽 규칙을 새로 고치고 전달을 비활성화합니다. 저는 보통 방화벽 스크립트 시작 부분에 이것을 포함하는데, 그렇게 해도 안전한지 모르겠어서 따로 포함시킵니다.
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t filter -F
iptables -t nat -F