我有一台 Ubuntu 服务器作为路由器运行。在服务器上我使用 iptables 和 DHCP 3.1.3、Samba 3.4.7 和 OpenVPN 2.1.0 服务器。
我遇到了一个问题,Samba 服务器在一段时间后(超过 20 分钟)从 VPN 客户端浏览器列表中消失。我从 iptables 日志中注意到的唯一奇怪的事情是:
[..] OUTPUT:DROP: IN= OUT=eth0 SRC=10.100.0.1 DST=10.50.0.255 LEN=78 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=137 DPT=137 LEN=58
如果 VPN 客户端重新连接,Samba 服务器将立即出现在浏览器列表中。
设置
网络:LAN 和 VPN 各自位于自己的子网中。(10.50.0.0 和 10.100.0.0)
DHCP:
subnet 10.50.0.0 netmask 255.255.255.0 {
interface eth0;
range 10.50.0.2 10.50.0.239;
default-lease-time 6000;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 10.50.0.255;
option routers 10.50.0.1;
option domain-name-servers XXX.XXX.XXX.XXX, XXX.XXX.XXX.XXX;
option netbios-name-servers 10.50.0.1;
}
subnet 10.100.0.0 netmask 255.255.255.0 {
interface tap0;
range 10.100.0.2 10.100.0.239;
default-lease-time 6000;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 10.100.0.255;
option netbios-name-servers 10.100.0.1;
}
Iptables(状态):
iptables -A INPUT -i eth0 -s 10.50.0.0/24 -d 10.50.0.255/32 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -s 10.50.0.0/24 -d 10.50.0.1/32 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 ! -s 10.50.0.0/24 -d 10.50.0.255/32 -j DROP
iptables -A INPUT -i tap0 -s 10.100.0.0/24 -d 10.100.0.255/32 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i tap0 -s 10.100.0.0/24 -d 10.100.0.1/32 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o tap0 ! -s 10.100.0.0/24 -d 10.100.0.255/32 -j DROP
局域网:用户正在获取网关、dns、NetBIOS(10.50.0.1)等,并被转发到互联网。(100% 有效)
OpenVPN 服务器:
- 服务器使用 tap 作为接口。
- 它不允许客户端到客户端,但有网络掩码 255.255.255.0。
- IP 配置来自 DHCP 服务器。
- VPN 客户端没有获取网关和 DNS 信息,但获得了 NetBIOS(10.100.0.1)和网络掩码信息。
- VPN 连接不会转发到互联网。
OpenVPN 客户端:客户端正在使用 keepalive( keepalive 10 120
)
Samba 服务器:
[global]
server string = [NAME]
interfaces = 10.50.0.0/24, 10.100.0.0/24
bind interfaces only = Yes
security = SHARE
guest account = smbguest
syslog = 5
log file = /var/log/samba/log.%m
max log size = 1000
name resolve order = wins bcast lmhosts host
max ttl = 21600
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
lm announce = Yes
lm interval = 30
local master = No
domain master = No
dns proxy = No
wins support = Yes
invalid users = root
guest ok = Yes
hosts allow = 127.0.0.1, 10.50.0.0/24, 10.100.0.0/24
hosts deny = 0.0.0.0/0