J'essaie de me connecter à un partage Samba via un VPN que j'ai configuré à l'aide d'OpenVPN. Samba et OpenVPN sont tous deux installés dans une machine virtuelle exécutant Ubunutu 14.04. Côté client, j'utilise plusieurs machines Windows. Le VPN fonctionne très bien, j'achemine actuellement le trafic Web des clients vers le www (sorte de proxy Web) et je suis en mesure d'atteindre d'autres clients ainsi que la machine servant elle-même (ping et sites Web). sous-réseaux actuels que j'utilise:
ifconfig
la sortie sur le serveur est (noirci l'adresse IP publique):
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1100 (1.1 KB) TX bytes:1100 (1.1 KB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.0.1 P-t-P:192.168.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:6046 errors:0 dropped:0 overruns:0 frame:0
TX packets:7621 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:549492 (549.4 KB) TX bytes:6177350 (6.1 MB)
venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: ::2/128 Scope:Compat
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:77095 errors:0 dropped:0 overruns:0 frame:0
TX packets:84984 errors:0 dropped:32 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:26204249 (26.2 MB) TX bytes:25862190 (25.8 MB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:xxx.xxx.xxx.xxx P-t-P:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.xxx Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
Utiliser un sous-réseau différent pour le VPN (10.8.0.0./24), pour éviter la collision au cas où j'aurais supervisé quelque chose ... ne fonctionnait pas de toute façon.
OpenVPN server.conf J'utilise ressemble à ceci:
port 1095
proto tcp
dev tun0
ca /usr/share/easy-rsa/keys/ca.crt
cert /usr/share/easy-rsa/keys/server.crt
key /usr/share/easy-rsa/keys/server.key
dh /usr/share/easy-rsa/keys/dh2048.pem
server 192.168.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
Push "route 192.168.0.0 255.255.255.0"
Push "redirect-gateway def1 bypass-dhcp"
;Push "route 0.0.0.0 0.0.0.0"
Push "dhcp-option DNS 208.67.222.222"
Push "dhcp-option WINS 208.67.220.220"
client-to-client
keepalive 10 120
auth SHA1
cipher BF-CBC
comp-lzo
user <sambauser>
group <sambagroupshare>
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3
les <sambauser>
est l'utilisateur propriétaire du répertoire auquel je souhaite accéder et est également membre du groupe <sambashare>
qui possède le répertoire. J'ai également essayé différents utilisateurs et groupes ici.
Peut-être y a-t-il quelque chose que je dois faire concernant la gestion des droits des utilisateurs?
J'ai également activé Push "route 0.0.0.0 0.0.0.0"
, je l'ai désactivé parce que je ne m'en sers pas de toute façon.
testparm
montre ce qui suit à propos de smb.conf:
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[homes]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
workgroup = LAB
server string = %h server (Samba, Ubuntu)
interfaces = tun0
bind interfaces only = Yes
server role = standalone server
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
wins support = Yes
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
hosts allow = 192.168.0.0/24
[homes]
comment = Home Directories
create mask = 0740
directory mask = 0740
directory mode = 0740
[share]
comment = share
path = /home/share
create mask = 0600
directory mask = 0740
directory mode = 0740
guest ok = Yes
De plus, j'ai mis hosts allow = 192.168.0.0/24
Les règles que j'utilise pour iptables ressemble à ceci:
#
# NAT
#
*nat
# Route all VPN Subnet traffic to the www
-A POSTROUTING -o venet0 -s 192.168.0.0/24 -j MASQUERADE
#-A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source 81.169.250.110
#-A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source $(ifconfig venet0:0 | grep -i 'inet' | cut -d: -f2 | awk '{ print $1}')
COMMIT
#
# FILTER
#
*filter
#
# FILTER - INPUT
#
# Log incoming traffic
#-A INPUT -p tcp -j LOG --log-prefix "iptables: " --log-level 7
#-A INPUT -p udp -j LOG --log-prefix "iptables: " --log-level 7
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that does not use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j ACCEPT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# HTTP
-A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p udp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# HTTPS
-A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p udp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
# VPN
-A INPUT -p tcp --dport 1095 -m state --state NEW,ESTABLISHED -j ACCEPT
# SAMBA
-A INPUT -i tun0 -p udp --dport 137 -j ACCEPT
-A INPUT -i tun0 -p udp --dport 138 -j ACCEPT
-A INPUT -i tun0 -p tcp --dport 139 -j ACCEPT
-A INPUT -i tun0 -p tcp --dport 445 -j ACCEPT
# Allows SSH connections
# The --dport number *has to be* the same as in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -m limit --limit 1/m --limit-burst 5 -j ACCEPT
# Allow ping
# note that blocking other types of icmp packets is considered a bad idea by some
# remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
# https://security.stackexchange.com/questions/22711
#-A INPUT -s 10.8.0.0/255.255.255.0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Allow all kinds of icmp
-A INPUT -i tun0 -s 192.168.0.0/24 -p icmp -j ACCEPT
# log iptables denied calls (access via "dmesg" command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Drop everything else
-A INPUT -j DROP
#
# FILTER - FORWARD
#
# Forward all established connections
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# VPN - PROXY
-A FORWARD -o venet0 -i tun0 -s 192.168.0.0/24 -j ACCEPT
# Drop everything else
-A FORWARD -j DROP
#
# FILTER - OUTPUT
#
# Accepts all established outbound connections
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow HTTP and HTTPS
-A OUTPUT -p tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 443 -j ACCEPT
# VPN
-A OUTPUT -p tcp --dport 1095 -j ACCEPT
-A OUTPUT -p tcp --sport 1095 -j ACCEPT
# SAMBA
#-A OUTPUT -p udp --dport 137 -j ACCEPT
-A OUTPUT -p udp --sport 137 -j ACCEPT
#-A OUTPUT -p udp --dport 138 -j ACCEPT
-A OUTPUT -p udp --sport 138 -j ACCEPT
#-A OUTPUT -p tcp --dport 139 -j ACCEPT
-A OUTPUT -p tcp --sport 139 -j ACCEPT
#-A OUTPUT -p tcp --dport 445 -j ACCEPT
-A OUTPUT -p tcp --sport 445 -j ACCEPT
# Allow SSH
-A OUTPUT -p tcp --sport 22 -j ACCEPT
# Allow ping
-A OUTPUT -p icmp -j ACCEPT
# Drop everything else
-A OUTPUT -j DROP
#
# /FILTER
#
COMMIT
Je ne sais pas quoi faire d'autre à ce sujet. J'ai essayé plusieurs configurations d'iptables, comme autoriser toutes les entrées [~ # ~] [~ # ~] provenant de tun0 : -A INPUT -i tun0 -j ACCEPT
.
J'ai aussi essayé de désactiver le hosts allow = 192.168.0.0/24
- ligne et liaison désactivée à l'interface tun0 -. De l'autre côté, j'ai essayé de resserrer la liaison d'interface comme ceci:
hosts allow = 192.168.0.0/24
interfaces = 192.168.0.0/24 tun0
bind interfaces only = yes
ce qui bien sûr n'a pas fait de différence notable.
Essayer d'atteindre le partage à partir de Windows manuellement en tapant \\192.168.0.1\share
ou \\192.168.0.1
dans la ligne d'adresse de l'Explorateur Windows se termine par un message d'erreur.
J'apprécierais vraiment que quelqu'un puisse m'aider et j'accueille toute suggestion!
Cordialement g.a
Je vois dans votre smb.conf que vous essayez de combiner l'interface tun avec la directive de configuration "bind interfaces only". Étant donné que tun n'est pas une interface "compatible avec la diffusion", cela ne fonctionnera pas (voir le document Samba pour les "interfaces de liaison uniquement"). 192.168.0.0/24 dans votre configuration ultérieure est toujours la même interface tun et en tant que telle, cette modification ne peut pas aider.
Par conséquent, Samba n'écoute pas du tout et ne peut donc répondre à aucune demande.
Vous pouvez vérifier ce que c'est le cas dans log.smbd avec log level = 3. Vous trouverez probablement quelque chose comme:
[AAAA/MM/JJ HH: HH: SS.ssssss, X] ../source3/lib/interface.c:316(add_interface) ne pas ajouter interface non diffusée tun
[AAAA/MM/JJ HH: HH: SS.ssssss, X] ../source3/lib/interface.c:543(load_interfaces) AVERTISSEMENT: pas d'interfaces résea trouvé
Si vous souhaitez accéder à samba uniquement via VPN, la section Global dans smb.conf devrait avoir ces lignes:
interfaces = 127.0.0.0/8 192.168.0.0/24
hosts deny = ALL
hosts allow = 127.0.0.1 192.168.0.1/24