
Ubuntu Server 16.04에 FreeRADIUS 3.0.11을 설치했습니다. Ubuntu Server는 ESXi 가상 머신에서 실행됩니다. 가상 머신에는 두 개의 NIC가 있습니다. 하나는 관리 네트워크에 연결하기 위한 것이고, 다른 하나는 고객 LAN에 연결하기 위한 것입니다. 또한 LAN과 Ubuntu 서버 사이의 방화벽으로 PfSense 가상 머신을 사용하고 있습니다.
문제는 내가 테스트할 때관리자 네트워크 radtest test 1234 192.168.1.144 1812 testing123
FreeRADIUS 서버는 제대로 인지하고 응답하지만, 제가 테스트할 때는랜, FreeRADIUS 서버는 액세스 요청을 전혀 받지 못합니다. 디버깅 모드에서 서버를 사용하고 있습니다 freeradius -X
.
IP는 다음과 같습니다.
Ubuntu server admin NIC, ens160: 192.168.1.144
Ubuntu server NIC to PfSense, ens192: 192.168.34.2
PfSense NIC to Ubuntu server: 192.168.34.1
PfSense LAN NIC: 192.168.33.1
내가 확인해 봤는데tcpdumpUbuntu 서버가 액세스 요청 패키지를 수신하고 있음을 확인하세요. IP 192.168.33.50은 노트북의 IP입니다.
sudo tcpdump -i ens192 port 1812
10:24:18.578802 IP 192.168.33.50.63334 > 192.168.34.2.radius: RADIUS, Access-Request (1), id: 0x09 length: 44
10:24:19.578202 IP 192.168.33.50.63334 > 192.168.34.2.radius: RADIUS, Access-Request (1), id: 0x09 length: 44
나는 사용하고있다iptablesHTTP 및 HTTPS를 PfSense 가상 머신에 전달하여 관리 네트워크에서 구성할 수 있습니다.
# Generated by iptables-save v1.6.0 on Wed May 4 10:23:08 2016
*nat
:PREROUTING ACCEPT [2:396]
:INPUT ACCEPT [2:396]
:OUTPUT ACCEPT [3:213]
:POSTROUTING ACCEPT [3:213]
-A PREROUTING -i ens160 -p tcp -m tcp --dport 4954 -j DNAT --to-destination 192.168.34.1:80
-A PREROUTING -i ens160 -p tcp -m tcp --dport 4955 -j DNAT --to-destination 192.168.34.1:443
-A POSTROUTING -d 192.168.34.1/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.34.2
-A POSTROUTING -d 192.168.34.1/32 -p tcp -m tcp --dport 443 -j SNAT --to-source 192.168.34.2
COMMIT
# Completed on Wed May 4 10:23:08 2016
# Generated by iptables-save v1.6.0 on Wed May 4 10:23:08 2016
*filter
:INPUT ACCEPT [24:2294]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16:3245]
-A INPUT -p udp -m udp -m multiport --dports 1812 -m comment --comment "Accept RADIUS" -j ACCEPT
COMMIT
# Completed on Wed May 4 10:23:08 2016
FreeRADIUS가 포트 1812를 수신하고 있는지 확인했습니다.
netstat -lun | grep 1812
udp 0 0 127.0.0.1:18120 0.0.0.0:*
udp 0 0 0.0.0.0:1812 0.0.0.0:*
udp6 0 0 :::1812 :::*
포트 1812를 인터페이스에서 다른 인터페이스로 전달하려고 시도했지만 잘못 구성했거나 도움이 되지 않았습니다. 이 작업을 수행하는 쉬운 방법이 있다고 확신하지만 아직 찾지 못했습니다. 도와주셔서 감사합니다!
업데이트
넣어보려고 했는데요청 로깅requests = ${logdir}/radiusd-%{%{Virtual-Server}:-DEFAULT}-%Y%m%d.log
파일에서 줄의 주석 처리를 제거하면 됩니다 /etc/freeradius/radiusd.conf
. 그러나 이로 인해 오류가 발생하고 freeradius가 전혀 시작되지 않습니다. 디버깅 모드가 시작되지만 radius.log 파일에 아무 것도 쓰지 않습니다.
sudo freeradius
radiusd: Error: Failed to parse log{} section.
버전 3.0.9부터 요청 로깅이 작동하지 않는 것 같습니다. 출처: github.com/FreeRADIUS/freeradius-server/issues/1131
답변1
문제를 해결했습니다. 다른 NIC에도 게이트웨이를 추가해야 했습니다.
/etc/network/interfaces
내 초기 파일 은 다음과 같습니다 .
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
# This is an autoconfigured IPv6 interface
#auto ens160
#iface ens160 inet6 auto
# ESXi NIC admin network
auto ens160
iface ens160 inet static
address 192.168.1.144
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.3 192.168.1.2
# ESXi NIC DMZ
auto ens192
iface ens192 inet static
address 192.168.34.2
netmask 255.255.255.0
두 번째 라우팅 테이블을 추가했습니다(마지막 줄이 추가됨).
sudo vim /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
1 rt2
새 라우팅 테이블을 구성했습니다.
sudo ip route add 192.168.34.0/24 dev ens192 src 192.168.34.2 table rt2
sudo ip route add default via 192.168.34.1 dev ens192 table rt2
추가된 라우팅 규칙:
sudo ip rule add from 192.168.34.2/32 table rt2
sudo ip rule add to 192.168.34.2/32 table rt2
구성이 작동하는지 테스트하고 파일을 수정하여 영구적으로 만들었습니다 /etc/network/interfaces
.
iface ens192 inet static
address 192.168.34.2
netmask 255.255.255.0
post-up ip route add 192.168.34.0/24 dev ens192 src 192.168.34.2 table rt2
post-up ip route add default via 192.168.34.1 dev ens192 table rt2
post-up ip rule add from 192.168.34.2/32 table rt2
post-up ip rule add to 192.168.34.2/32 table rt2
솔루션 소스:https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System
IP테이블
포트 전달을 계속 실행하려면 다음을 추가해야 합니다.나가는 인터페이스iptables 규칙에 (-o ens192 추가됨):
-A POSTROUTING -d 192.168.34.1/32 -o ens192 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.34.2
-A POSTROUTING -d 192.168.34.1/32 -o ens192 -p tcp -m tcp --dport 443 -j SNAT --to-source 192.168.34.2